PHP でのファイル アップロードの実装方法
1. フォーム パーツ
ユーザーにファイルのアップロードを許可し、HTML フォームの宣言にアップロード属性を追加します:
enctype = 'multipart/form-data'
フォームのメソッドは POST である必要があります
フォーム オプションの MAX_FILE_SIZE 隠しフィールドが使用されますアップロードされるファイルのサイズを制限するには、ファイル フォーム要素の前に配置する必要があります。単位はバイトです。
コードは次のとおりです:
<form enctype='multipart/form-data' id='aa' name='aaa' method='post' action='xxx.php'> <input type='hidden' name='MAX_FILE_SIZE' value='2621114' /> <input name='upload_file' type='file' /> </form>
関連する推奨事項: 「PHP 入門チュートリアル 」
2. アップロードされた処理ファイル
アップロード時に、PHP はファイルに関する情報の配列を受け取ります。これらの情報は、スーパー グローバル配列 $_FILES にあります。
例: フォームのファイル入力ボックスの名前が Upload_file の場合、ファイルに関するすべての情報が配列 $_FILES['upload_file'] に含まれます。
例: 顧客は次のように「aaa.jpg」の画像配列値をアップロードしました。
name "p5pp.jpg" アップロード時のファイルの名前
type "image/ jpeg" ファイルタイプ
tmp_name "/tmp/phpjksdf" サーバー側の一時ファイル名
error アップロードエラーの戻り値
size 2045ファイルの実際のサイズ
上記の配列内のエラーは、次のように異なる定数値を返します:
UPLOAD_ERR_OK エラーは発生せず、ファイルのアップロードは成功しました
UPLOAD_ERR_INI_SIZEファイル サイズが PHP.INI の Upload_max_filesize オプションで制限された値を超えています
UPLOAD_ERR_FORM_SIZE アップロードされたファイルのサイズが HTML フォームの MAX_FILE_SIZE オプション値を超えています。プログラム内で $FILES ['up_file']['size'] の形式をチェックして処理することができます。
UPLOAD_ERR_PARTIAL ファイルの一部のみがアップロードされました
UPLOAD_ERR_NO_FILE ユーザーはファイルを提供しませんでしたアップロード
アップロード後の処理の具体例:
コードは次のとおりです:
if(!move_uploaded_file($_FILES['f']['tmp_name'],"uploads/".$_FILES['f']['name'].".jpg")){ echo "error"; }
関数:
move_uploaded_file はアップロードされた一時ファイルを移動しますファイルを指定されたディレクトリにコピーします
例:
move_uploaded_file('一時ファイル名','指定されたファイル パス')
is_uploaded_file は、http Post 経由でアップロードされたファイルかどうかを判断します。
例:
コードは次のとおりです:
if(!is_uploaded_file($_FILES['f']['tmp_name'])){ echo '非法'; }
3. 関連パラメータ
php のパラメータ。
file_uploads ファイルのアップロードを許可するかどうか。デフォルトは ON。
upload_tmp_dir ファイルをアップロードするための一時ディレクトリ。指定しない場合は、システムのデフォルトの場所が使用されます。
upload_max_filesize アップロードできるファイルの最大サイズ。デフォルトは 2M です。
post_max_size は、PHP が POST メソッドを使用したフォーム送信で受け入れることができるデータの最大量を制御します。PHP ファイルを使用してアップロードする場合、この値は、upload_max_filesize より大きくなるように変更する必要があります。
max_input_time は、POST/GET/PUT メソッドを介してデータを受信する時間を秒単位で制限します。
memory_limit スクリプトの実行によるシステム メモリの大量使用を避けるために、PHP ではメモリ使用量の制限を定義できます。このパラメータを設定して、単一のスクリプトが使用できる最大メモリ容量を指定します。これは、post_max_size 値よりも適切に大きい値にする必要があります。
max_execution_time は、スクリプトを強制終了する前に PHP がスクリプトの実行を待機する時間を秒単位で設定するために使用されます。この 2 番目のオプションでは無限ループ スクリプトを制限できますが、この機能により、正当なアクティビティ (大きなファイルのアップロードなど) が長期間続くと操作が失敗する可能性もあります。この場合、この変数を増やすことを検討する必要があります。
4. 複数ファイルのアップロードを検討する
$_FILES 配列を使用すると、複数のファイルを簡単にアップロードできます。 $_FILES 配列はクライアント フォームのすべてのファイル フィールドの内容を取得できるため、同じフォームでアップロードされたすべてのファイルを取得できます。
5. アップロード メモリ制限を突破する
方法 1:
php.ini のmemory_limit 値を、次のようなより大きな値に変更します。 64M
方法 2:
Apache Rewrite メソッドを使用して、memory_limit の値を動的に変更します。まず .htaccess ファイルを作成し、ファイル アップロード プログラムの現在のディレクトリに保存します。
コードは次のとおりです:
php_value memory_limit 100M php_value post_max_size 30M php_value upload_max_filesize 30M php_value max_execution_time 300 php_value max_input_tim 300 php_value display_errors On
以上がPHPでファイルアップロード機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。