テーブル内の ENCTYPE="multipart/form-data" の部分に注目してください。これは間違ってはいけません。間違っていると、ファイルを
アップロードしていることがサーバーに認識されません。
アップロード プログラムを設計する
フロントエンド部分が完了したので、バックエンドがどのようにファイルを受信し、指定したディレクトリに保存するかを慎重に検討してみましょう
。 PHP を使い始めましょう。これは submit.php3 のプログラムです:
If($MyFile != "none") {
copy($MyFile,"/home/berber/$MyFile_name") ;
unlink($MyFile);
}
else {
echo"ファイルをアップロードしていませんか?;
}
?>
そうでないにせよ、これがプログラム全体の処理です:
1. If($MyFile != "none");2. ファイルを指定した場所にコピーします。
送信ボタンをクリックすると、ファイルがコンピューターからサーバーの一時ディレクトリにアップロードされます。ファイル
には一時ファイルという名前が付けられています。ファイル フィールドの名前の値を使用してアクセスする必要があります。この場合、実際のファイル名には、ファイル
フィールドの名前の値と " を使用してアクセスします。 _name", in Here is $MyFile_name. copy() 関数を使用して、一時ファイル $MyFile を指定されたディレクトリにコピーします。コピーされたファイルの名前は $MyFile_name です。完了後に一時ファイルを削除することを忘れないでください。そうしないと、
不要なファイルです。
ファイル名を設定します。
ファイル フィールドの VALUE 属性の値を変更しようとする人は多くありません。
それは不可能です。W3C はそれが可能であると言っていますが、実際には、IE も Netscape も VAUE 属性の値を設定できないのは少しばかげています。ユーザーはそれを行うことができますか? そうすれば、
のセキュリティ上の脆弱性がもたらされたことがわかります。あなたが私の Web サイトにログインすると、そのファイルフィールドを変更できると考えられます。
それでは、/etc/passwd ファイルをアップロードしないようにすることはできますか? 最初にファイル フィールドの値を設定する必要はありません。 pass 送信アクションをシミュレートする JavaScript プログラム... すごい... あなたのマシン上の任意の
ファイルを処理できるため、ブラウザは タグのファイル フィールドの VALUE フィールドを設定するだけです。
ファイル サイズの制限
もう 1 つの便利な機能は、
タグを追加することです。 TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
これにより、ユーザーは 100 KB を超えるファイルをアップロードできなくなります。
ファイルサイズの表示
ファイルサイズを表示するには、fileフィールドのname属性値に「_size」変数を追加することでアクセスできます。この例では、
だけを $MyFile_size として使用します。したがって、アップロードされたファイルのサイズをユーザーに伝えたい場合は、次のようにすることができます:
echo "$MyFile_name をアップロードしました";
echo "ファイルのサイズは$MyFile_size" ;
権限
明らかに、ターゲット ディレクトリに対する書き込み権限が必要です。ユーザーが匿名でファイルをアップロードする場合、ユーザー名は
"bobody" である必要があります。このユーザーはターゲット ディレクトリへの書き込み権限を持っている必要があります。そうでないと、次のようなメッセージが表示される可能性があります:
警告: '/home/berber/berber.txt' を作成できません:
権限が拒否されました
/home/berber/submit.php3 の 5 行目