ホームページ  >  記事  >  バックエンド開発  >  複数のファイルをアップロードするための PHP スクリプト_PHP チュートリアル

複数のファイルをアップロードするための PHP スクリプト_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:00:02914ブラウズ

翻訳者注: この記事の元の名前は「Creating a Multi-File Upload Script in PHP」です。個人的には、この記事は平均的に書かれており、コードもそれほど専門的ではないと思いますが、比較的短く、現時点でこれより良い記事が見つからなかったので翻訳しました。実際、PHP マニュアルには、複数のファイルのアップロードについて説明したセクションがあり、比較対照することができます。記事内の一部の単語や文章が翻訳時に不快だったため、元の意味に沿ってある程度の修正が加えられました。私のレベルは限られているので、専門家の方からアドバイスをいただければ幸いです。

はじめに

PHP プログラマーとして、私はかつて、複数のファイルを同時にアップロードできるフォームを必要とする顧客に遭遇しました。したがって、私はある晩 1 時間を費やして、このリクエストを完了するための最良かつ最も簡単な方法を見つけました。このチュートリアルでは、「for」ループ ステートメントがコア コードになります。

スクリプト 1: ユーザーがアップロードするファイルの数を設定できるようにします


ファイルのアップロード < ;body>

同時にアップロードするファイルの数、最大値を入力してください9



;input type="submit " name="Submit" value="Submit">


とてもシンプルです。このコードでは、uploadNeed コンポーネントの maxlength 属性を 1 に設定しているため、ユーザーが入力できる最大値は 9 です。もちろん、必要に応じてこの部分を変更できます。

スクリプト 2: 動的フォームの作成

さて、次のページを完了したら、全体の作業の半分が完了しました。このタスクを実行するには、for ループ ステートメントを使用します。

uploadForm2.php



// 動的フォームを作成します
$uploadNeed = $_POST['uploadNeed'];
for($x= 0;$x<$uploadNeed;$x++){
?>






この中でページでは、「type」属性を持つ HTML フォームを作成しました。フォームの中央に PHP コードを挿入してループを完成させました。 $x を 0 に設定し、ループ数を目的の値 $uploadNeed (ユーザーが送信したばかりの値) に設定します。また、$uploadNeed の値を隠しフィールドに出力して、最終ページに渡せるようにします。

これを行う目的は、変数$xの値を「name」属性の値「uploadFile」の末尾に追加することです。このようにして、各「name」属性値「uploadFile」の後に、最初のファイルを区別するための異なる番号が付けられます。

スクリプト 3: アップロードされたファイルを処理する

それでは、ファイルをアップロードする最後のステップを完了しましょう

processFiles.php

$uploadNeed = $_POST['uploadNeed']
// Start LOOP
for( $x=0;$x<$uploadNeed;$x++){
$file_name = $_FILES['uploadFile'. $x]['name'];
// ファイル名の特殊文字を削除します
$file_name = スラッシュ($file_name);
$file_name = str_replace("'","",$file_name);
$copy = copy($_FILES['uploadFile'. $x]['tmp_name'],$file_name); / コピーが成功したかどうかを確認します
if($copy){
echo "$file_name のアップロードに成功しました
";
}else{
echo "$file_name のアップロードに失敗しました
"; // ループを終了します
?>

このスクリプトでは、まず、uploadForm2.php から $uploadNeed 変数を取得する必要があります。前のページと同様に、「for」ステートメントを使用してループを作成します。異なる場合は、ループ内で事前定義されたグローバル変数 $_FILES を使用する必要があり、それを $file_name 変数に渡します。

次に、stripslashesとstr_replace関数を呼び出して処理します。ファイル名には特殊文字が含まれる場合があるため、アップロード時の解釈エラーを防ぐためにストリップスラッシュ関数を使用します。

変数 $x を追加した方法に注目してください。$x は $_FILES 内の数値になります。こうすることで、プログラムはどのファイルを処理すべきかを知ることができます。

コピー機能を使用すると、アップロードされたファイルを指定された現在の場所に実際にコピーし始めます。最後に、コピーが成功したかどうかを判断し、結果を画面に出力するための簡単なコードが追加されます。

結論

この小さなスクリプトにより、複数のファイルを一度にアップロードする作業がより便利になると確信しています。次のヒントに従って、関連するコードをこのスクリプトに追加して改善できます。

ファイル名をMySQLデータベースに保存
ファイルのサイズを取得してデータベースに保存
アップロードに失敗したファイルのファイル名を保存する一時ファイルを作成し、プログラム実行後に再試行
ファイルの一括削除機能を追加

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/317205.html技術記事翻訳者注: この記事の元の名前は「CreatingaMulti-FileUploadScriptinPHP」です。個人的には、この記事は平均的に書かれており、コードはそれほど専門的ではないと思いますが、比較的短く、時間もかかりません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。