ファイルや写真のバッチ アップロードであっても、最初に行うことは、HTML で name=userfile[] のような配列変数を作成することです。 for ($_i=0 ; $_i<$_cont; $_i++) をトラバースして、ファイルをバッチでアップロードできるようにする例を見てみましょう
例
代码如下 | |
session_start(); <スタイル> * {マージン:0; パディング:0;リストスタイル:なし;} .content {幅:400px;高さ:自動;マージン:0 自動;マージントップ:60px;パディングボトム:30px;背景:#ffd3b6;ボーダー:破線 1px #f90} .content h1 {幅:400ピクセル;高さ: 30ピクセル;行の高さ:30px; テキスト整列:中央; font-family:"微软雅黑";フォントサイズ:14px;カラー:#000} .content .error {幅:300px;高さ:自動;行の高さ:30px;テキスト整列:中央;マージン:0 自動;カラー:#f00} .content .con {幅:340px;高さ:自動;マージン:0 自動; font-size:12px;} .content #file {幅:280px;高さ:20ピクセル;境界線:実線 1px #ccc;背景:#fff;マージン:10px 0px 6px 0; font-size:12px;} .content #send {幅:60px;高さ:22ピクセル;境界線:実線 1px #ccc;背景:#fff; フォントサイズ:12px; margin-top:10px;} スタイル> <スクリプト> $(document).ready(function() { $('#cont').val($('.file #file').size()); $('#send').eq(0).click(function() { var filesize=$('.file #file').size(); $('.file').append(""); $('#cont').val(ファイルサイズ+1); }); }); スクリプト> PHP文件批量上传if ($_GET['up']==up) { // 重复提交を防止します if ($_SESSION['file']==$_GET['irand']) { $_cont=intval($_POST['cont']); // 将ファイル框总数受信收并转换整型 $_size=20000; //設置制限文件大小 $_dir='pdir/'; //文件保存目录 関数サイズ($_size) { // 文書サイズが 1024bit より大きいかどうかを判断し、結果が大きい場合は、サイズを KB として取得します。 if ($_size>1024*1024) { ラウンド($_size/1024/1024,2)を返します。 MB'; }else if ($_size>1024) { $_size=$_size/1024; return ceil($_size).'KB'; }その他{ $_size を返します。ちょっと'; } } // 上に配置する画像の種類、上に配置する画像のサイズ $_upfiles = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif'); //循環上传文件に利用 for ($_i=0; $_i<$_cont; $_i++) { if (is_array($_upfiles)) { if (!in_array($_FILES['userfile']['type'][$_i],$_upfiles)) { exit('ファイルは jpg、png、gif の形式でアップロードしてください Return'); } } //ファイルサイズを決定します if ($_FILES['userfile']['size'][$_i]>$_size) { exit('アップロードされるファイルは次を超えることはできません:'.size($_size)); } // ファイルがアップロードされたかどうかを確認します if ($_FILES['userfile']['error'][$_i]>0) { スイッチ ($_FILES['userfile']['error'][1]) { ケース1: echo 'アップロードされたファイルはphp.iniのupload_max_filesizeオプションの制限を超えています'; 休憩; ケース 2: echo 'アップロードされたファイルのサイズが、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています'; 休憩; ケース 3: echo 'ファイルの一部のみがアップロードされました'; 休憩; ケース 4: echo 'ファイルがアップロードされていません'; 休憩; ケース 6: echo '一時フォルダーが見つかりません'; 休憩; ケース 7: echo 'ファイルの書き込みに失敗しました'; 休憩; } 終了します; } //ファイル拡張子を取得します if (!is_dir($_dir)) { mkdir($_dir,0700); } //エッセイの数を生成します $_rand=mt_rand(0,100000); //ファイル拡張子を取得します $_n=explode('.',$_FILES['userfile']['name'][$_i]) //ファイル名を分割します $_file_len=count($_n); //配列の長さを返します // 取得した拡張子が最後のものであることを確認してください $_name=$_dir.time().'_'.$_rand.'.'.$_n[$_file_len-1]; //指定したディレクトリにファイルを移動します if (is_uploaded_file($_FILES['userfile']['tmp_name'][$_i])) { if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$_i],$_name)) { exit('ファイルの移動に失敗しました'); }その他{ echo 'ファイルは正常にアップロードされました '; echo 'ファイルパス:'.$_name.' '; echo 'ファイル サイズ:'.size(filesize($_name)); echo ' 戻ってアップロードを続行'; } }その他{ exit('アップロードされた一時ファイルが存在しないため、指定されたフォルダーにファイルを移動できません'); } } //セッション変数を破棄するにはいくつかの方法があります //最初のメソッド、すべてのセッション変数を破棄します: session_destroy(); // 2 番目のタイプ: $_SESSION['file']='' のような単一のアイテムを破棄します。 session_destroy(); 終了します; }その他{ " method="post" enctype="multipart/form-data"> フォーム> |
核心原理分析
複数のファイルをアップロードする際、フロントデスクにとって最も重要なことは
コードは次のとおりです | |
|
これらのコード行の詳細を知っている友人は、name="userfile[]" を見つけるでしょう。これは配列に保存されているため、js を使用する場合は、次のように追加することもできます。
複数ファイルのアップロードではPHP処理が鍵となります
for ($_i=0; $_i
if (is_uploaded_file($_FILES['userfile']['tmp_name'][$_i])) { if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$_i],$_name)) { exit('ファイルの移動に失敗しました'); }その他{ echo 'ファイルは正常にアップロードされました '; echo 'ファイルパス:'.$_name.' '; echo 'ファイル サイズ:'.size(filesize($_name)); echo ' 戻ってアップロードを続行'; } } |
ここでの表示は非常に単純です。for が配列を走査し、userfile[] 配列を走査し、$_FILES['userfile']['tmp_name'][$_i] を使用して取得していることがわかります。 [$_i] は複数ファイルのアップロード項目であり、配列に保存されるだけであることに注意してください。