ホームページ  >  記事  >  php教程  >  PHP 複数ファイルのアップロード操作

PHP 複数ファイルのアップロード操作

WBOY
WBOYオリジナル
2016-06-21 08:47:41955ブラウズ

実際、複数のファイルのアップロードと単一のファイルのアップロードは似ていますが、コードにはいくつかのトリックがあります。

最初は、index.html アップロード フォームです。前のファイル アップロード フォームのファイルを file[]

に変更するだけです。

コードをコピー

ファイルをアップロード

<本体>

ファイルをアップロードします:

ファイルをアップロードします:

ファイルをアップロードします:

コードをコピー

upload.php で $_FILES を使用して印刷します

print_r($_FILES)

?>

次の多次元配列を取得します

コードをコピー

配列

(

[ファイル] => 配列

(

[名前] => 配列

(

[0] => 写真 1.jpg

[1] => 写真 2.jpg

[2] => 写真 3.jpg

)

[タイプ] => 配列

(

)

[tmp_name] => 配列

(

[0] => [1] => [2] =>

)

[エラー] => 配列

(

[0] => 0

[1] => 0

[2] => 0

)

[サイズ] => 配列

(

[0] => 0

[1] => 0

[2] => 0

)

)

)

コードをコピー

単一ファイルのアップロードの原則に従って、まず何を取得する必要があるかを考えてください。

明らかに、ファイル情報の配列を取得する必要があります。この時点で取得するのは、対応するキー値が存在する多次元配列です。多次元です、

上記の 3 つのファイルのように、分割する必要があるのは、対応する 3 つのファイル情報配列に分割することだけです。

分割配列の構造

コードをコピー

配列

(

[0] => 配列

(

[名前] = & gt; 写真 1.jpg

[タイプ] => 画像/jpeg

> > >

)

[1] => 配列

(

[名前] = & gt; 写真 2.jpg

[タイプ] => 画像/jpeg

> > >

)

[2] => 配列

(

[名前] => 写真 3.jpg

[タイプ] => 画像/jpeg

[tmp_name] => F:wamptmpphp13D3.tmp

> >

)

)

コードをコピー

以下は配列の分割と再編成のコードです

コードをコピー

//print_r($_FILES['file']);

$arr=$_FILES['file'];

$files=array();

for($i=0;$i

$files[$i]['name']=$arr['name'][$i];

$files[$i]['type']=$arr['type'][$i];

$files[$i]['tmp_name']=$arr['tmp_name'][$i];

$files[$i]['error']=$arr['error'][$i];

$files[$i]['size']=$arr['size'][$i];

}

print_r($files);

?>

コードをコピー

残りは簡単です。単一のファイルをアップロードする手順を繰り返し、配列を反復処理するだけです。

コードは次のとおりです:

コードをコピー

//print_r($_FILES['file']);

$arr=$_FILES['file'];

$files=array();

for($i=0;$i

$files[$i]['name']=$arr['name'][$i];

$files[$i]['type']=$arr['type'][$i];

$files[$i]['tmp_name']=$arr['tmp_name'][$i];

$files[$i]['error']=$arr['error'][$i];

$files[$i]['size']=$arr['size'][$i];

}

for($i=0;$i

//アップロードされたファイル情報を取得します

$fileName=$files[$i]['name'];

$fileType=$files[$i]['type'];

$fileError=$files[$i]['type'];

$fileSize=$files[$i]['size'];

$tempName=$files[$i]['tmp_name'];//一時ファイル名

//アップロードファイルの種類を定義します

$typeList = array("image/jpeg","image/jpg","image/png","image/gif"); //許可されるタイプを定義します

if($fileError>0){

//アップロードされたファイルのエラー番号を判定

スイッチ ($fileError) {

ケース 1:

$ message = "アップロードされたファイルは、php.ini の Upload_max_filesize オプションで制限されている値を超えました。";

休憩;

ケース 2:

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

休憩;

ケース 3:

$message="ファイルの一部のみがアップロードされました。";

休憩;

ケース 4:

$message="ファイルはアップロードされていません。";

休憩;

ケース 6:

$message="一時フォルダーが見つかりません。";

休憩;

ケース 7:

$message="ファイルの書き込みに失敗しました";

休憩;

ケース 8:

$message="PHP 拡張機能によりファイルのアップロードが中断されました";

休憩;

}

exit("ファイルのアップロードに失敗しました: ".$message);

}

if(!is_uploaded_file($tempName)){

//POST によってアップロードされたファイルかどうかを判断します

exit("HTTP POST 経由でアップロードされませんでした");

}その他{

if(!in_array($fileType, $typeList)){

exit("アップロードされたファイルは指定されたタイプではありません");

}その他{

if(!getimagesize($tempName)){

// ユーザーがウイルス ファイル拡張子を画像形式に変更するなど、悪意のあるファイルをアップロードできないようにします

exit("アップロードされたファイルは写真ではありません");

}

}

if($fileSize>1000000){

// 特定のフォームのアップロードファイルは制限されています

exit("アップロードされたファイルが制限サイズを超えています");

}その他{

// 中国語名の文字化けを回避します

$fileName=iconv("UTF-8", "GBK", $fileName);//iconv によってキャプチャされた文字エンコーディングを utf-8 から gbk 出力に変換します

$ filename = strlaplace (".", Time (). ".", $ Filename) // 画像名の後にタイムスタンプを追加し、ファイル名の変更を回避します

echo "ファイルは正常にアップロードされました!";

}その他{

echo "ファイルのアップロードに失敗しました";

}

}

}

}

?>

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