Переместить несколько файлов, загруженных с помощью запроса POST Http (okhttp 3.3.1) в другой каталог

Мне нужно загрузить несколько файлов по запросу из моего приложения Android на веб-сервер Apache. Я на компьютере с Windows 10 и использовал XAMPP для настройки веб-сервера.

Когда я загружаю один файл, все работает как задумано.
Но при публикации нескольких сбоев они появляются в папке C: \ xampp \ tmp, но затем не перемещаются.

Вот так выглядит массив $ _FILES

<?php $_FILES = array (

'uploaded_file1' =>
array (
'name' => 'data1.csv',
'type' => 'text/csv',
'tmp_name' => 'C:\\xampp\\tmp\\phpA9A6.tmp',
'error' => 0,
'size' => 7991,
),
'uploaded_file2' =>
array (
'name' => 'data2.csv',
'type' => 'text/csv',
'tmp_name' => 'C:\\xampp\\tmp\\phpA9A7.tmp',
'error' => 0,
'size' => 24906727,
),
'uploaded_file3' =>
array (
'name' => 'data3.csv',
'type' => 'text/csv',
'tmp_name' => 'C:\\xampp\\tmp\\phpB244.tmp',
'error' => 0,
'size' => 12342379,
),
);

И это сценарий, я пытаюсь переместить их

<?php

$move = "images/";
foreach ($_FILES['uploaded_file']['tmp_name'] as $key => $value)
{
$tmp_name = $_FILES['uploaded_file']['tmp_name'][$key];
$name = $move.basename($_FILES['uploaded_file']['name'][$key]);
move_uploaded_file($tmp_name, $name);
}

?>

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

<?php $_FILES = array (
'uploaded_file' =>
array (
'name' => 'data3.csv',
'type' => 'text/csv',
'tmp_name' => 'C:\\xampp\\tmp\\phpEF74.tmp',
'error' => 0,
'size' => 12342379,
),
);

Я не очень разбираюсь в HTTP и PHP, так что это, вероятно, тривиальная проблема, но даже с несколькими различными версиями PHP-скрипта я не могу понять это. Любая помощь с благодарностью.

РЕДАКТИРОВАТЬ: Целевой каталог C: \ xampp \ htdocs \ images существует, и я настроил максимальный размер файла загрузки и POST, но, как я уже сказал, проблема заключается только в перемещении файлов.

2

Решение

Я нашел решение своей проблемы, поэтому я опубликую его здесь на случай, если у кого-то возникнет аналогичная проблема.
Проблема была в том, как структурирован массив $ _FILES.
Из руководства по php так выглядит массив $ _FILES при отправке запроса $ POST.

Array
(
[name] => Array
(
[0] => facepalm.jpg
[1] =>
)

[type] => Array
(
[0] => image/jpeg
[1] =>
)

[tmp_name] => Array
(
[0] => /tmp/phpn3FmFr
[1] =>
)

[error] => Array
(
[0] => 0
[1] => 4
)

[size] => Array
(
[0] => 15476
[1] => 0
)
)

При создании мультичастицы с библиотекой okhttp мой массив $ _FILES выглядел так, как я писал ранее.

Вот скорректированный скрипт для обработки загрузки:

<?php

$path = "images/";

foreach($_FILES as $file){
$name=$file['name'];

$file_path = $path.basename($name);

if(move_uploaded_file($file['tmp_name'],$file_path))    {
echo "success";
}else {
echo "error";
}
}
?>
0

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

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

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