ホームページ  >  記事  >  バックエンド開発  >  PHPによるデータアップロードについて

PHPによるデータアップロードについて

WBOY
WBOYオリジナル
2016-06-13 13:25:59848ブラウズ

PHP によるファイルのアップロードについて

Apache サーバーパラメータを取得

ini_get(str) 関数を使用する
たとえば、アップロードされたファイルの最大サイズを取得します。 echo ini_get("upload_max_filesize");

PHP アップロード ファイルに関連するパラメータ

PHP のデフォルトのアップロード制限は最大 2M です。この設定を超えるファイルをアップロードする場合は、PHP や Apache などのいくつかのパラメータを調整する必要があります。以下では、PHP ファイルのアップロードに関連するいくつかのパラメータを簡単に紹介します。 :

  • ファイルアップロード

HTTP 経由でのファイルのアップロードを許可するかどうか、デフォルトは ON です

  • upload_tmp_dir

upload_tmp_dir は、PHP によってアップロードされたファイルが配置される一時ディレクトリを記述するために使用されます。指定されていない場合は、サーバーが一時ファイルを閉じていないこと、およびそのフォルダーへの書き込み権限があることを確認する必要があります。 PHP はシステムのデフォルト値を使用します

  • upload_max_filesize

アップロードできる最大ファイル サイズ、デフォルトは 2M

  • post_max_size

POST メソッドを使用してフォーム送信中に PHP が受信できるデータの最大量を制御します。 PHP ファイルのアップロード機能を使用したい場合は、この値を Upload_max_filesize より大きくする必要があります…????????? 詳細…

?

  • 最大入力時間

POST、GET、および PUT メソッドを介してデータを受信する時間を秒単位で制限します。アプリケーションが低速リンクで実行されている場合は、データの受信に必要な追加時間に対応するためにこの値を増やす必要があります

  • メモリ制限

スクリプトの実行によってシステムで使用可能な大量のメモリが使用されるのを避けるために、PHP ではメモリ使用量の制限を定義できます。単一のスクリプトが使用できる最大メモリ容量を指定するには、memory_limit 変数を使用します。memory_limit 変数の値は、post_max_size

の値より適切に大きくする必要があります。
  • 最大実行時間

max_execution_time は、PHP がスクリプトを強制終了するまで待機する時間を設定します。この時間は秒単位で計算されます。これは、スクリプトが無限ループに入ると変化します。 量はとても助かります。ただし、完了までに時間がかかる正当なアクティビティ (大きなファイルのアップロードなど) がある場合、この機能により操作が失敗する可能性もあります。このような場合、この変数の値を次のように増やすことを検討する必要があります。 いくつかの重要なプロセスの実行中に PHP がスクリプトを閉じないようにする

  • Linux ホストの場合、/etc/httpd/conf.d/access.conf/ に php.conf ファイルがある可能性があります。このファイルにより、一部のシステムのファイル サイズ制限の問題が解決される可能性があります。

PHP ファイルアップロードの原理と実装

PHP のファイル関数を使用してアップロード

このコードは 2 つのファイルに分かれており、1 つは Upload.html で、もう 1 つは Upload.php

  • upload.html
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="max_file_size" value="100000">
<input name="userfile" type="file">  
<input type="submit" value="上传文件">
</form>

その中で、

  1. これはタグであることに注意してください。ファイルをアップロードする場合は、multipart/form-data を指定する必要があります。そうしないと、サーバーは認識できません。何をするか。
  2. ファイル Upload.html のフォーム オプション MAX_FILE_SIZE の非表示の値フィールドは、その値を設定することでアップロードされるファイルのサイズを制限できることに注意してください。
  3. MAX_FILE_SIZE の値はブラウザに対する単なる提案であり、実際には簡単に回避できます。したがって、ブラウザの制限を制限するためにこの値に依存しないでください。実はPHPは 設定の最大アップロードファイルサイズは無効になりません。ただし、フォームに追加したほうがよいでしょう MAX_FILE_SIZE を使用すると、ユーザーは、大きなファイルがアップロードされるのを待って時間を費やしてから、そのファイルが大きすぎることに気づくという手間が省けます。
  • upload.php
$f=&$HTTP_POST_FILES['Myfile'];
$dest_dir='uploads';//设定上传目录
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//设置文件名为日期加上文件名避免重复
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//设定上传的文件的属性
または
<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>

上記の例の $_FILES 配列の内容は次のとおりです。ファイルアップロードフィールドの名前は userfile であると仮定します (名前は任意で構いません)

  • $_FILES['userfile']['name'] クライアント マシン ファイルの元の名前。
  • $_FILES['userfile']['type'] ファイルの MIME タイプ。「image/gif」など、この情報に対するブラウザのサポートが必要です。
  • $_FILES[’userfile’][’size’] アップロードされたファイルのサイズ (バイト単位)。
  • $_FILES[’userfile’][’tmp_name’] ファイルのアップロード後にサーバーに保存される一時ファイル名。
  • $_FILES[’userfile’][’error’] ファイルアップロードに関連するエラーコード
  1. 値: 0; エラーは発生せず、ファイルは正常にアップロードされました。
  2. 値: 1; アップロードされたファイルは、php.ini の Upload_max_filesize オプションで制限された値を超えています。
  3. 値: 2; アップロードされたファイルのサイズが、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。
  4. 値: 3; ファイルの一部のみがアップロードされました。
  5. 値: 4; ファイルはアップロードされませんでした。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。