PHP ファイルアップロード機能 -- 単一ファイルアップロード
ここでは主に PHP アップロードファイルの単一ファイルアップロード機能を紹介します。
PHP は主に POST メソッドを通じてファイルをアップロードします。ファイルがアップロードされると、ファイルはサーバーの一時ディレクトリに保存されます (PHP 構成ファイル php.ini のオプション Upload_tmp_dir を参照できます)
次に、例を見てみましょう:
---------------------------- ------------ ----------------------------------
if(isset( $_POST['submit'])){
switch($_FILES['upload_file']['error']){
case UPLOAD_ERR_INI_SIZE:
echo "ファイル サイズがサーバーの制限を超えています";< case UPLOAD_ERR_PARTIAL:
echo "ファイルの一部のみがアップロードされました";
_ERR_NO_TMP_DIR:
echo "一時フォルダーが見つかりません";ケースアップロード_err_cant_write:
エコー "ファイルが失敗しました";
ブレーク;
ケースアップロード_err_ok:
$ Upload_dir ='.iconv_8"gb2312 "" ,, $_FILES['upload_file']['name'] );
if(file_exists($upload_dir)){
echo '<script>alert(同じ名前のファイルが既に存在します)</script>';
<script>alert(ファイルは正常にアップロードされました)</script> ';
}else{ } }
?>
------------- -------------------- ------------------------------ ----
まずコードを分析しましょう:
1. コードには $_FILES['upload_file']['error'] などの変数が含まれていることがわかります。これは何を意味するのでしょうか?
$_FILES は、アップロードされたファイルに関するすべての情報を含むグローバル 2 次元配列です。この配列には、アップロードされたファイルの属性を記述する 5 つの要素があります:
$_FILES['upload_file']['name'] アップロードされたファイルの名前
$_FILES['upload_file']['type' ] アップロード ファイルの MIME タイプ
$_FILES['upload_file']['size'] アップロードされたファイルのサイズ (単位: バイト)
$_FILES['upload_file']['tmp_name']アップロードされたファイルの一時名
$_FILES['upload_file']['error'] アップロード ステータス コード
2. コードには UPLOAD_ERR_PARTIAL などの名前が含まれていることがわかりますが、これは何を意味するのでしょうか?
これらはアップロード ステータス コードです:
UPLOAD_ERR_INI_SIZE ファイル サイズがサーバーの制限を超えています。php.ini で Upload_max_filesize を設定します
UPLOAD_ERR_FORM_SIZE ファイル サイズがブラウザの制限を超えています。MAX_FILE_SIZE の隠しフォーム フィールド パラメータを設定します
UPLOAD_ERR_PARTIAL ファイルの一部のみがアップロードされました
UPLOAD_ERR_NO_FILE アップロード フォームにファイルが指定されていません
UPLOAD_ERR_NO_TMP_DIR 一時ファイルが見つかりません
UPLOAD_ERR_CANT_WRITE ファイルの書き込みに失敗しました
UP LOAD_ERR_OK ファイルのアップロードは成功しました
コード実行効果:
3. コード内の move_uploaded_file() 関数は何をしますか?
ファイルはアップロード後にサーバーの一時ディレクトリに保存されるため、move_uploaded_file() を使用して指定された場所に移動する必要があります。
注: ファイルのアップロードが失敗する場合は、php 構成ファイル内の一部のパラメーターが適切に設定されていない可能性があります。たとえば、ファイル アップロードの
。 HTTP ファイルのアップロードを許可します。
; http://php.net/file-uploads
file_uploads = On
; HTTP アップロード ファイルの一時ディレクトリ (そうでない場合はシステムのデフォルトを使用します
) ; 指定)。
; http://php.net/upload-tmp-dir
upload_tmp_dir = "xampptmp"
; /php.net /upload-max-filesize
upload_max_filesize = 2M
; 1 回のリクエストでアップロードできるファイルの最大数
max_file_uploads = 20
さらに:
; PHP が受け入れる POST データの最大サイズ。
; この値は、enable_post_data_reading.
によって POST データの読み取りが無効になっている場合は無視されます。 ; http: //php.net/post-max-size
post_max_size = 8M
; スクリプトが消費できる最大メモリ量 (128MB)
; Memory-limit
memory_limit = 128M
; 各スクリプトの最大実行時間 (秒単位) http://php.net/max-execution-time
; CLI SAPI
max_execution_time = 30
では、各スクリプトがリクエスト データの解析に費やす最大時間は、本番サーバーでこの時間を制限することをお勧めします。予期せぬ
を排除します。
; 注: このディレクティブは、CLI SAPI
では -1 にハードコードされています。 デフォルト値: -1 (無制限)
;秒)
; 生産値: 60 (60 秒)
; http://php.net/max-input-time
max_input_time = 60