Для части моего веб-приложения я пытаюсь загрузить 1 файл под 2 разными именами. Первое имя - это имя исходного файла, которое пользователь указал. Это будет использоваться для ссылки позже в моем приложении. Второе имя - измененное имя (просто добавление переменной счетчика). Для загрузки одного файла с помощью move_uploaded_file ($ name, $ path) он работает как шарм. Когда я попытался вызвать один файл move_uploaded_file (...) после другого, только первая функция будет загружать файл. Вторая функция не вернет сообщение об ошибке.Одновременная загрузка файла в тот же каталог
После поиска в Интернете казалось, что это может быть выполнено с помощью цикла. Я поместил имена и пути в массив, пропустил его с помощью цикла foreach, но загружен только первый файл.
Ниже приведены файлы и их соответствующие части, так как некоторые из них являются длительными.
mainPage.php применяет заголовок на всех моих страницах. verifyFile.php - это файл, который выполняет загрузку, а также проверку массовой обработки, чтобы проверить, что файл действителен.
workPage.php
<?php
session_start();
require("mainPage.php");
?>
<link rel = "stylesheet" type = "text/css" href = "CSS/workpageCSS.css" />
<div id = "pageContainer">
<form enctype = "multipart/form-data" action = "verifyFile.php" method = "post">
<table border = "0" cellpadding = "2" cellspacing = "5">
<tr>
<td>
<label for = "fileName">Select file to upload</label>
</td>
<td>
<input type = "file" name = "file" id = "fileName" placeholder = "Choose file path" autofocus = "autofocus" required = "required" />
</td>
</tr>
<tr>
<td></td>
<td><input type = "submit" value = "Load file" /></td>
</tr>
</table>
</form>
</div>
Порция verifyFile.php, который загружает файл.
Попытка 1:
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', '1');
$dupFile = appendFileName(basename($_FILES['file']['name']));
$origToUpload = basename($_FILES['file']['name']);
$targetPath = ("uploads/".$dupFile);
$origTargetPath = "uploads/".$origToUpload;
if(move_uploaded_file($_FILES['file']['tmp_name'], $targetPath)) {
#echo("Successfully uploaded ".basename($_FILES['file']['name']));
} else {
echo("Failed 1<br />");
}
/*move_uploaded_file($_FILES['file']['tmp_name'], $origTargetPath); Does not upload but no errors are generated */
?>
Покушение 2
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', '1')
$filesToUpload = array($targetPath, $origTargetPath);
foreach($filesToUpload as $toUpload) {
if(move_uploaded_file($_FILES['file']['tmp_name'], $toUpload)) {
echo("worked!"); /* first time is successful and $targetPath is loaded onto my server */
} else {
echo("neg"); /* nothing is uploaded and returns neg */
}
}
?>
$ origTargetPath и $ TargetPath оба действительны, так как если я сторнировать их в моем массиве, только первый файл правильно загружено.
За дополнительной информацией, я использую Apache через XAMPP.
@Prix Извините за ответ delaeyd, только что вернулся к своему столу. Использование полного пути ничего не изменило, но я выбрал ответ Энтони Гарсиа. –