我試圖讓我的系統上傳一個文件,具體取決於從列表中選擇的幾個作業。PHP根據多個變量ID上傳單個文件
系統將從本質上選擇作業,允許用戶上傳與所有這些作業相關的文件,這些文件存儲在具有唯一標識的數據庫中。
到目前爲止,它似乎只上傳數組中第一個id的文件。如何多次上傳文件,使用文件名中的每個作業ID分別定義每個文件?
這是循環至今:
if ($_FILES["file"]["type"] != "") {
$count++;
$uploadComplete = 0;
$newFileName = date("YmdHis");
$newFileName = $newFileName . "-TEST".$multiId[$i]."-";
$newFileName2 = $newFileName . "-";
$newFileName2 = $_FILES["file"]["name"];
$newFileName2 = str_replace(" ", "-", $newFileName2);
$ext = strrchr($_FILES["file"]["name"], ".");
if (($ext == ".png")
|| ($ext == ".jpeg")
|| ($ext == ".pjpeg")
|| ($ext == ".jpg")
|| ($ext == ".PNG")
|| ($ext == ".JPEG")
|| ($ext == ".PJPEG")
|| ($ext == ".JPG")) {
$fileType = "image";
}
if (($ext == ".pdf")
|| ($ext == ".doc")
|| ($ext == ".docx")
|| ($ext == ".zip")
|| ($ext == ".PDF")
|| ($ext == ".DOC")
|| ($ext == ".DOCX")
|| ($ext == ".ZIP")) {
$fileType = "file";
}
if (($ext == ".png")
|| ($ext == ".jpeg")
|| ($ext == ".pjpeg")
|| ($ext == ".jpg")
|| ($ext == ".pdf")
|| ($ext == ".doc")
|| ($ext == ".docx")
|| ($ext == ".zip")
|| ($ext == ".PNG")
|| ($ext == ".JPEG")
|| ($ext == ".PJPEG")
|| ($ext == ".JPG")
|| ($ext == ".PDF")
|| ($ext == ".DOC")
|| ($ext == ".DOCX")
|| ($ext == ".ZIP")
&& ($_FILES["file"]["size"] < 10000000)){
if ($_FILES["file"]["error"] > 0) {
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
} else {
if (file_exists("../../uploads/logdocs/".$newFileName . $_FILES["file"]["name"])) {
//nothing
} else {
move_uploaded_file($_FILES["file"]["tmp_name"],"../../uploads/logdocs/" .$newFileName . $newFileName2);
$fileLocation = "/uploads/logdocs/" .$newFileName . $newFileName2;
if (empty($fileLocation)) {
$uploadComplete = 0;
} else {
$uploadComplete = 1;
}
}
}
}
} else {
$uploadComplete = 1;
}
if ($uploadComplete == 1) {
mysql_query("UPDATE system_modificationsLogs
SET
modificationLogUpload = '$fileLocation'
WHERE modificationsLogId = '$modificationsLogId'");
}
我建議你爲那些大的ifs使用一個數組,你可以使用if(in_array($ ext,$ arrayWithExtensions))它看起來會更好,並且你將有很少的代碼行。 – Alex7 2014-09-24 13:29:36