[英]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.