ホームページ  >  記事  >  バックエンド開発  >  PHP ファイルのアップロード (基本) に関するよくある質問

PHP ファイルのアップロード (基本) に関するよくある質問

WBOY
WBOYオリジナル
2016-08-08 09:30:19842ブラウズ

前回の記事「PHPで中国語ファイルをアップロードするとファイル名が文字化けする問題」でファイルアップロードの問題に遭遇したので、次はPHPでファイルをアップロードする際に起こりやすい問題をいくつかまとめてみましょう。今後使用するときに探してください。


1. まず最も単純なアップロードファイルを作成します

リーリー

リーリー

リーリー

2. 次に、スーパーグローバル変数 $_FILES の値を理解します

$_FILES['ユーザーファイル']['名前']

$_FILES['ユーザーファイル']['タイプ']

$_FILES['ユーザーファイル']['サイズ']

$_FILES['userfile']['tmp_name']

$_FILES['ユーザーファイル']['エラー']

そのうち、$_FILES['userfile']['error']のすべての値:

UPLOAD_ERR_OK 値は 0 で、エラーは発生せず、ファイルは正常にアップロードされます。

UPLOAD_ERR_INI_SIZE 値は 1 で、アップロードされたファイルは php.ini の Upload_max_filesize オプションで制限された値を超えています。

UPLOAD_ERR_FORM_SIZE 値は 2 で、アップロードされたファイルのサイズが HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。

UPLOAD_ERR_PARTIAL その値は 3 で、ファイルは部分的にのみアップロードされます。

UPLOAD_ERR_NO_FILE その値は 4 で、ファイルはアップロードされません。

UPLOAD_ERR_NO_TMP_DIR の値は 6 で、一時フォルダーが見つかりません。 PHP 4.3.10 および PHP 5.0.3 で導入されました。

UPLOAD_ERR_CANT_WRITE 値は 7 で、ファイルの書き込みに失敗しました。 PHP 5.1.0で導入されました。

3. 多くの状況: アップロードされたファイルの種類を厳密に判断する必要があります

アップロードされたファイルのタイプを判断するために $_FILES['userfile']['type'] を使用するのは賢明ではないことはわかっています。判断はファイルのサフィックス名に基づいて行われるため、誰でもファイルのサフィックスを変更できます。 mp3 ファイルとしてアップロードし、画像として偽装することができるため、PHP では、ファイルの MIME を決定するために PHP 拡張子 php_fileinfo を使用することを推奨しています。違う。

4. シナリオ 1: アップロードされたファイルの名前を同じ名前に自動的に変更します

リーリー

5. シナリオ 2: 日付に基づいてディレクトリにファイルをアップロードします

リーリー

6. 複数のファイルのアップロード

リーリー

リーリー

場合によっては、複数のファイルのこの変数構造は使いにくいです:

配列(1) {

["アップロード"]=>array(2) {

...

}

...

}

}

}

多くの場合、必要なのはこれに似た構造です

配列(1) {


["アップロード"]=>array(2) {


[0]=>配列(2) {

"[" 名前 "] = & gt; string (9)" file0.txt "

}、

[1]=>配列(2) {

"[" 名前 "] = & gt; string (9)" file1.txt "

"[" Type "] = & gt; string (10)" text/html "

}

}

}

以下の関数を使うと簡単に構造を変換できます

リーリー

7.

場合によっては、アップロード ファイルの最大サイズを変更するようにサーバーを設定する必要があります

まずはフォームから

リーリー

アップロードファイルのサイズを制限できます(バイパス可能)。

その後、サーバーの構成も調整する必要があります

php.ini:

max_execution_time = 30 每个脚本运行的最长时间,单位秒
max_input_time = 60,每个脚本可以消耗的时间,单位也是秒
memory_limit = 128M,这个是脚本运行最大消耗的内存
post_max_size = 8M,表单提交最大数据为 8M,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的。
upload_max_filesize = 2M ,上载文件的最大许可大小 

nginx:

<span>1</span> <span>location / {
</span><span>2</span>     root   html<span>;
</span><span>3</span>     index  index.html index.htm<span>;
</span><span>4     </span>client_max_body_size    1000m<span>;
</span><span>5</span>  }

以上就介绍了php上传文件常见问题(基础),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。