簡體   English   中英

PHP的多個文件上傳

[英]php multiple file upload

我有一個正在嘗試一次最多上傳10個文件的腳本。 我的html中有10個單獨的輸入:

  <?php
    for($i=0;$i<10;++$i) {
         $num = $i+1;
         echo '
            <span>'.$num.'</span><input type="file" name="photo'.$i.'" />
              ';
     }
  ?>

然后,我有了以前使用過的上傳器(格式略有不同),但現在無法使用:

$path = "../path/to/folder/";
for($i = 0; $i < 20; $i++){
  $fileName = "photo". "$i";
  $filePath = "$path". "photo$i.jpg";

  if (!empty($_FILES['$fileName']['tmp_name'][$i])) {
       if (!copy($_FILES['$fileName']['tmp_name'][$i], $filePath)) {
            echo "failed to save '.$filePath.'";
        }
       chmod($filePath, 0644);
     }
 }

在此腳本的工作版本中,我剪切了for循環,並分別對每個上載編號(我有這段代碼沒有循環10次,每個都有自己的編號)。 效果很好,但是看一段這樣的代碼真的很丑。 任何想法如何使這項工作?

更新:

仍然沒有運氣,我感謝所有幫助。 我認為我的問題在於$ _FILES數組未正確填充,如下所示:

將HTML更改為:

  <?php
    for($i=0;$i<10;++$i) {
         $num = $i+1;
         echo '
            <span>'.$num.'</span><input type="file" name="photo[]" />
              ';
     }
  ?>

和上載程序腳本可以:

$path = "../path/to/folder/";
for($i = 0; $i < 20; $i++){
  $fileName = "photo". "$i";
  $filePath = "$path$fileName.jpg";

  if (!empty($_FILES["photo"]["tmp_name"][$i])) {
       if (!copy($_FILES["photo"]["tmp_name"][$i], $filePath)) {
            echo "failed to save '.$filePath.'";
        }
       chmod($filePath, 0644);
     }
 }

您兩次使用$i

$_FILES["$fileName"]["tmp_name"][$i]

[$i]部分對我來說毫無意義:您已經在通過$fileName訪問每個元素。 我認為您只需擺脫[$i]

我相信您的問題(的一部分)是報價。 您在循環中使用單引號,這導致不對變量求值。 嘗試改用下面的代碼。 可能還有其他一些問題,但這應該可以解決您的問題的一個方面。

$path = "../path/to/folder/";
for($i = 0; $i < 20; $i++){
  $fileName = "photo". $i;
  $filePath = "$path". "$fileName.jpg";

  if (!empty($_FILES["$fileName"]['tmp_name'][$i])) {
       if (!copy($_FILES["$fileName"]['tmp_name'][$i], $filePath)) {
            echo "failed to save $filePath";
        }
       chmod($filePath, 0644);
     }
 }

你太復雜了
雖然沒有什么比這更容易
只是foreach超過$ _FILES

foreach ($_FILES as $file) {
  $filePath = $path. "photo".($i++).".jpg";
  if (!$file['error']) {
    move_uploaded_file($file['tmp_name'], $filePath));
  }
}

這就是第一個命名約定的全部內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM