我使用while循環上傳多個文件,下面是我的代碼,move_uploaded_file總是失敗,我得到的消息「上傳文件時出錯!」。我使用相同的代碼(while循環中沒有$ counter的代碼)在其他用例中上傳單個文件,這很好,但是當我在while循環中使用相同的代碼時,我認爲代碼看起來很好,但在move_uploaded_file
...請告訴我最新的問題,我該如何解決這個問題?move_uploaded_file未能支持多種文件上傳while循環
$counter = 0;
while ($_FILES) {
if (!isset($_FILES['album_pics'])) {
//required variables are empty
die("File is empty!");
}
if ($_FILES['album_pics']['error'][$counter]) {
//File upload error encountered
die(upload_errors($_FILES['album_pics']['error'][$counter]));
}
$FileName = strtolower($_FILES['album_pics']['name'][$counter]); //uploaded file name
$ImageExt = substr($FileName, strrpos($FileName, '.')); //file extension
$FileType = $_FILES['album_pics']['type'][$counter]; //file type
$FileSize = $_FILES['album_pics']["size"][$counter]; //file size
$RandNumber = rand(0, 9999999999); //Random number to make each filename unique.
$uploaded_date = date("Y-m-d H:i:s");
$FileTitle = current(explode('.', $FileName));
switch (strtolower($FileType)) {
case 'image/png':
case 'image/gif':
case 'image/jpeg':
case 'application/pdf':
case 'application/msword':
case 'application/vnd.ms-excel':
case 'application/x-zip-compressed':
case 'text/plain':
case 'text/html':
break;
default:
die('Unsupported File!'); //output error
}
//File Title will be used as new File name
$NewFileName = preg_replace(array('/\s/', '/\.[\.]+/', '/[^\w_\.\-]/'), array('_', '.', ''), strtolower(substr($FileTitle, 0, 10)));
$NewFileName = $NewFileName.'_'.$RandNumber.$ImageExt;
$UploadDirectory = 'ajax/';
if (move_uploaded_file($_FILES['album_pics']['tmp_name'][$counter], $UploadDirectory.$NewFileName)) {
// here I will insert image metadata to database with the new image name
$counter = (if result is true) ? $counter + 1 : $counter;// increase counter if insert returns true
} else {
die('error uploading File!');
}
function upload_errors($err_code) {
switch ($err_code) {
case UPLOAD_ERR_INI_SIZE:
return 'The uploaded file exceeds the upload_max_filesize directive in php.ini'.ini_get("upload_max_filesize");
case UPLOAD_ERR_FORM_SIZE:
return 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
case UPLOAD_ERR_PARTIAL:
return 'The uploaded file was only partially uploaded';
case UPLOAD_ERR_NO_FILE:
return 'No file was uploaded';
case UPLOAD_ERR_NO_TMP_DIR:
return 'Missing a temporary folder';
case UPLOAD_ERR_CANT_WRITE:
return 'Failed to write file to disk';
case UPLOAD_ERR_EXTENSION:
return 'File upload stopped by extension';
default:
return 'Unknown upload error';
}
} //function upload_erros() close
} //while loop close
似乎它可能是一個目錄權限問題。另外,你是否得到這一行的文件大小? $ FileSize = $ _FILES ['album_pics'] [「size」] [$ counter]; //文件大小 – 2013-05-07 10:46:18
我不認爲它的權限問題,我上傳與相同的代碼和相同的目錄單文件,是我得到的文件大小 – 2013-05-07 10:48:09
$計數器=(如果結果爲真)? $ counter + 1:$ counter; //首先初始化「result」var。否則,你的代碼是好的 – 2013-05-07 10:51:33