Использование "маленькой ванильной структуры" для создания функции загрузки

Глядя на этот документ; Я пытаюсь загрузить файл с помощью XMLHttpRequest.

Вот как я начинаю: беру код из раздела Немного ванильного каркаса документа. Затем я сначала заставляю его работать на моем собственном сайте. Затем, чтобы реализовать функцию загрузки, я хочу изменить конец файла register.php. Действительно, передача файлов на сервер там уже происходит. Чтобы назвать это загрузкой, мне нужно только сохранить файл на сервере.

Я делаю это после этих строк:

echo "\n\n:: Files received ::\n\n";
print_r($_FILES);

Здесь я хочу записать содержимое $ _FILES [0] на сервере. Для этого я использую этот код:

$myfile = fopen("MyData.jpg", "w");
fwrite($myfile, $_FILES[0]);

// The three lines below that I have tried instead of the one above do not work either.
//fwrite($myfile, json_encode($_FILES['photos']);
//fwrite($myfile, json_encode($_FILES[photos[0]]);
//fwrite($myfile, json_encode($_FILES['photos'][0]);

fclose($myfile);

В результате на сервере, как и ожидалось, записан файл с именем MyData.jpg, но его длина равна нулю.

Я думаю, что в трех строках выше есть ошибка, но что я сделал не так?

secure.php.net/manual/en/features.file-upload.php$_FILES[0] - это не файл. Это информационный о файл.
T.J. Crowder 13.09.2018 18:39

И это, наверное, не будет $_FILES[0]. Это будет $_FILES['name_of_form_field']. Это будет массив, который, если вы хотите где-то записать эти данные, вы захотите структурировать его с помощью print_r($_FILES['name_of_form_field'], true) или json_encode($_FILES['name_of_form_field']) или чего-то еще, чтобы fwrite знал, что с ним делать.

ceejayoz 13.09.2018 18:49

Спасибо за предложение. Я пробовал, но пока не работает. Я также обновил свой пост, чтобы отразить это.

Michel 13.09.2018 19:20
0
3
45
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Правильный метод - использовать

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "MyData.jpg");

где "fileToUpload" - это имя поля, которое вы указали для кнопки файла.

Ответ принят как подходящий

Думаю, вы получите здесь данные: $ _FILES ['photos'] ['tmp_name'] [0]. Попробуйте, пожалуйста.

Или

Вы можете переписать свой код, как показано ниже:

foreach($_FILES['photos']['tmp_name'] as $i=>$file){
    if($_FILES['photos']['error'][$i] == 0){
        move_uploaded_file($file, "MyData_".$i.".jpg");
    }
}

Другие вопросы по теме