我正在尝试允许我的系统上传单个文件,具体取决于从列表中选择的多个作业。
系统将主要选择作业,允许用户上传与所有这些作业相关的文件,这些文件存储在具有唯一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'");
}
答案 0 :(得分:0)
我假设你在循环中这样做。 在第一次迭代中,这行代码正确&#34;上传&#34;,或更准确地移动位于tmp位置的文件。
move_uploaded_file($_FILES["file"]["tmp_name"],"../../uploads/logdocs/" .$newFileName . $newFileName2);
在第二次及以后的迭代中,您将返回,并尝试移动相同的文件,但文件不再存在,因为您在第一次尝试中移动了它。
您可以使用copy而不是move_uploaded_file。
copy($_FILES["file"]["tmp_name"], "../../uploads/logdocs/" .$newFileName . $newFileName2);
这将复制文件并保留原始tmp文件以便以后复制。
在脚本执行结束时,tmp文件将被销毁。