PHPファイルアップロード機能の実装を5ステップで詳しく解説
1. フォーム パーツ
では、HTML フォームの宣言にアップロード属性を追加する必要があります:
enctype = 'multipart/form-data'
フォームのメソッドは POST である必要があります
フォーム オプションの MAX_FILE_SIZE 隠しフィールドは、アップロードされるファイルのサイズを制限するために使用されます。これはファイル フォーム要素の前に配置する必要があり、単位はバイトです。
例:
2. アップロードされたファイルの処理
アップロード時に、PHP はスーパーグローバル配列 $_FILES にあるファイルに関する情報の配列を受け取ります。
例: フォームのファイル入力ボックスの名前が Upload_file の場合、ファイルに関するすべての情報は配列 $_FILES['upload_file'] に含まれます。 " /tmp/phpjksdf" サーバー側の一時ファイル名
error アップロードエラーの戻り値
size 2045 ファイルの実際のサイズ
上記の配列内のエラーは、次のように異なる定数値を返します:
UPLOAD_ERR_OK エラーは発生しませんでした。ファイルのアップロードは成功しました
UPLOAD_ERR_INI_SIZE ファイル サイズが、PHP.INI の Upload_max_filesize オプションで制限された値を超えています
UPLOAD_ERR_PARTIAL ファイルの一部のみがアップロードされました
UPLOAD_ERR_NO_FILE ユーザーはファイルのアップロードを提供しませんでした
具体的な例アップロード後の処理:
if(!move_uploaded_file($_FILES['f']['tmp_name'],"uploads/".$_FILES['f']['name'].".jpg") ){
エコー " エラー";
}
関数:
move_uploaded_file は、アップロードされた一時ファイルを指定されたディレクトリに移動します。
例:
is_uploaded_file は、http 経由かどうかを決定します。アップロードされたファイルを投稿
例:
if(!is_uploaded_file($_FILES['f']['tmp_name'])){
echo 'illegal';
}
3. 関連パラメータ
file_uploads ファイルのアップロードを許可するかどうか、デフォルトは ONupload_tmp_dir ファイルのアップロードを防止するための一時ディレクトリ。指定されていない場合は、システムのデフォルトの場所を使用します
upload_max_filesize アップロードできるファイルの最大サイズ、デフォルトは 2M ですpost_max_size 必要に応じて、POST メソッドを使用したフォーム送信で PHP が受け入れることができるデータの最大量を制御しますPHP ファイルのアップロードを使用するには、この値を Upload_max_filesize よりも大きくする必要があります
max_input_time は、POST/GET/PUT メソッドを介してデータを受け入れる時間を秒単位で制限します。
memory_limit スクリプトの実行による大量のシステム メモリの使用を避けるために、PHP ではメモリ使用量の制限を定義できます。このパラメータを設定して、単一のスクリプト プログラムが使用できる最大メモリ容量を指定します。これは、post_max_size 値より適切に大きい必要があります
max_execution_time は、PHP がスクリプトを強制終了する前にスクリプトの実行を待機する時間を設定するために使用されます、数秒で。この 2 番目のオプションでは無限ループ スクリプトを制限できますが、この機能により、正当なアクティビティ (大きなファイルのアップロードなど) が長期間続くと操作が失敗する可能性もあります。この場合、この変数を増やすことを検討する必要があります。
4. 複数のファイルのアップロードを検討する
5. アップロード メモリ制限を突破する
php.ini のmemory_limit 値を 64M などのより大きな値に変更します方法 2:
Apache Rewrite メソッドを使用すると、memory_limit の値が動的に変更されます。まず .htaccess ファイルを作成し、ファイル アップロード プログラムの現在のディレクトリに保存します。コードは次のとおりです: php_valuememory_limit 100M
php_value post_max_size 30M
php_valueupload_max_filesize 30M
php_value max_execution_time 300
php_value max_input_tim 300
php_value display_errors On
――EOF――
上記の記事を読んだ後、お役に立てれば幸いです。
Red Hacker Alliance (www.7747.net) より抜粋 原文: http://www.7747.net/kf/201009/73557.html