1. ホーム
  2. php

[解決済み] HTMLアップロードのMAX_FILE_SIZEが機能していないように見える

2022-02-16 21:39:59

質問

という隠しフィールドはどうなっているのでしょうか? MAX_FILE_SIZE は、どのように機能するのでしょうか?

<form action="" method="post" enctype="multipart/form-data">
    <!-- in byes must preceed file field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="2097152" /> 
    <input type="file" name="upload" />

    <input type="submit" name="submit" value="Submit" />
</form>

4MB以上のファイルをアップロードしましたが、クライアント側からは何の警告も出ませんでした(サーバー側の話ではないです)。それは何ですか? MAX_FILE_SIZE はどうすればいいのでしょうか?

アップデイト

PHPでquot;soft"制限をかけることができるのですね。しかし、これを使うのと、次のようなものをチェックするのとでは、何か違いがあるのでしょうか? $_FILES['upload']['size'] < 2000 をコード化することはできますか?

どのように解決するのですか?

MAX_FILE_SIZE は <ストライク KBではない バイトです。あなたの言う通り、バイト単位です。ということは、4MBという制限の場合 convert 4MB in bytes {1024 * (1024 * 4)} を試してみてください。

<input type="hidden" name="MAX_FILE_SIZE" value="4194304" /> 

アップデート1

他の方が説明されているように、この件で警告が出ることはありません。サーバー側でソフト的に制限をかけるためにあるのです。

更新情報2

サブ質問にお答えします。そうです、違いは、ユーザーの入力を決して信用してはいけないということです。もし、常に制限をかけたいのであれば、常にそのサイズをチェックしなければなりません。以下を信用してはいけません。 MAX_FILE_SIZE は、ユーザーによって変更される可能性があるからです。ですから、そうですね、常に希望するサイズ以上であることを確認する必要があります。

を課している場合は、その差は MAX_FILE_SIZE 2MB のファイルをアップロードしようとした場合、最初の 2MB に達した時点で転送が終了し、PHP はそのファイルに対するデータの受け取りを停止します。ファイル配列にエラーが報告されます。