1

最近、PHPバックエンドとHTMLフォームを使用して複数のファイルをアップロードできるスクリプトを作成しました。複数のファイルをアップロードしているときにユーザーがアップロードボタンを2回クリックしないように、プログレスバーを実装したいと思います。可能であればjavascriptやajaxの使用は避けたいのですが、同時にブラウザー間の互換性が必要です。

これが私のhtmlフォームデータです:

<form enctype="multipart/form-data" action="uploader.php" method="POST">
Choose Course Code:
<select name="subject_list">
<option value="ACC 100">ACC 100</option>
<option value="ACC 406">ACC 406</option>
<option value="ECN 104">ECN 104</option>
<option value="ECN 204">ECN 204</option>
<option value="FIN 300">FIN 300</option>
<option value="GMS 200">GMS 200</option>
<option value="ITM 100">ITM 100</option>
<option value="ITM 301">ITM 301</option>
<option value="ITM 305">ITM 305</option>
<option value="ITM 330">ITM 330</option>
<option value="ITM 350">ITM 350</option>
<option value="ITM 407">ITM 407</option>
<option value="ITM 500">ITM 500</option>
<option value="ITM 501">ITM 501</option>
<option value="ITM 505">ITM 505</option>
<option value="ITM 600">ITM 600</option>
<option value="LAW 122">LAW 122</option>
<option value="SSH 105">SSH 105</option>
<option value="Other">Other</option>
</select><br>
Choose a file to upload (Max 500MB): <input name="rye_file[]" type="file" id="file_style" multiple />
<input type="submit" name="submit" value="Upload" />
</form> 
<form action="/logout.php">
<input type="submit" value="Logout">
</form>

これが私のバックエンドです:

<?php
$subject_list = $_POST['subject_list'];
$uploaddir = "/var/www/fixnode_website/content/Secure Login/Rye High/uploads/$subject_list";
$files=array();
$fdata=$_FILES['rye_file'];
if(is_array($fdata['name'])){
 for($i=0;$i<count($fdata['name']);++$i){
  $files[]=array(
   'name'     => $fdata['name'][$i],
   'tmp_name' => $fdata['tmp_name'][$i],
  );
 }
}
else $files[]=$fdata;

foreach ($files as $file) {
  // uploaded location of file is $file['tmp_name']
  // original filename of file is $file['name']
  $move_file = move_uploaded_file($file['tmp_name'], "$uploaddir/".$file['name']);
}
if($move_file){
   echo "File is valid, and was successfully uploaded to: $subject_list folder. Please wait, your browser will refresh in 5-10 seconds!";
   header('Refresh: 10; URL=/index.php');
  } 
  else {
     echo "Upload failed";
 }
?>
4

1 に答える 1

1

ご希望に添えないかもしれませんが、お試しいただければ幸いです

  1. uploadify http://www.uploadify.com [無料] 、html5版もあります。時には、車輪を再発明しないようにしています。
  2. Uploadifyの料金が気になるならblueimp http://blueimp.github.com/jQuery-File-Upload/
  3. HTML5 がとても好きなので、http://www.igloolab.com/jquery-html5-uploader/ を試してみ てください (ツイートや Facebook の投稿でこれを支払うことになります。それはどれほど素晴らしいことでしょうか?)
  4. その他のいくつかのオプション: http://www.fyneworks.com/jquery/multiple-file-upload/
  5. Valums: https://github.com/valums/file-uploader (fine_uploader は 15 ドルの一括払いで利用可能) - 理にかなっています。

よろしければ、Jqueryを使用する必要があることに注意してください。

于 2013-02-28T20:56:40.003 に答える