Как передать файл при помощи xmlhttprequest?

Пользователь

от steve , в категории: JavaScript , 2 года назад

Как передать файл при помощи xmlhttprequest?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от caterina , 2 года назад

@steve 

Для передачи файла при помощи XMLHttpRequest (XHR) нужно использовать объект FormData. FormData позволяет собирать данные формы, включая файлы, и отправлять их на сервер с помощью XHR.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
// выбираем файл
var fileInput = document.querySelector('input[type="file"]');
var file = fileInput.files[0];

// создаем объект FormData
var formData = new FormData();

// добавляем файл к объекту FormData
formData.append('file', file);

// создаем объект XHR
var xhr = new XMLHttpRequest();

// настраиваем запрос
xhr.open('POST', '/upload', true);

// отправляем запрос
xhr.send(formData);


В приведенном выше примере мы выбираем файл с помощью элемента input типа file, затем создаем объект FormData и добавляем выбранный файл к нему с помощью метода append(). Далее мы создаем объект XMLHttpRequest и отправляем наш объект FormData на сервер с помощью метода send().


На сервере вы можете получить файл с помощью стандартного метода для получения файлов из формы, например, в PHP это может выглядеть так:

1
$file = $_FILES['file'];


Обратите внимание, что этот пример отправляет запрос на URL "/upload". Вам нужно заменить это на URL вашего сервера и обработчика для загрузки файлов.

Пользователь

от lamar , год назад

@steve 

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


Вот пример кода, который позволяет загрузить файл при помощи XMLHttpRequest:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Получаем файл из input[type="file"]
var fileInput = document.querySelector('input[type="file"]');
var file = fileInput.files[0];

// Создаем объект FormData
var formData = new FormData();

// Добавляем файл к FormData
formData.append('file', file);

// Создаем новый XMLHttpRequest-объект
var xhr = new XMLHttpRequest();

// Подписываемся на событие load
xhr.addEventListener('load', function(event) {
    // Здесь можно обработать ответ от сервера
});

// Устанавливаем метод и адрес сервера для отправки данных
xhr.open('POST', '/upload');

// Отправляем запрос с помощью метода send и передаем FormData
xhr.send(formData);


Для получения файла на сервере вам может понадобиться реализовать загрузку на сервере и обработку запроса с помощью выбранного вами языка программирования или фреймворка. Ниже приведен пример обработки запроса на загрузку файла на сервере с использованием языка PHP:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$file = $_FILES['file'];

// Доступ к информации о файле
$file['name'];  // Имя файла
$file['type'];  // MIME-тип файла
$file['size'];  // Размер файла в байтах
$file['tmp_name'];  // Временное имя файла на сервере

// Сохранение файла на сервере
move_uploaded_file($file['tmp_name'], '/path/to/uploads/' . $file['name']);


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