массивы — PHP Загрузить один файл на основе нескольких идентификаторов переменных

Я пытаюсь разрешить моей системе загружать один файл в зависимости от нескольких заданий, выбранных из списка.

Система будет по существу выбирать задания, позволяя пользователю загружать файл, связанный со всеми этими заданиями, которые хранятся в базе данных с уникальным идентификатором.

Пока что кажется, что файл загружается только для первого идентификатора в массиве. Как загрузить файл несколько раз, используя каждый идентификатор задания в имени файла, чтобы определить каждый файл отдельно?

Это цикл до сих пор:

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

Решение

Я предполагаю, что вы делаете это в цикле.
На первой итерации эта строка кода корректно «загружает» или, точнее, перемещает файл, который находится в местоположении 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 будет уничтожен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]