Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Отправка файла с формы


Автор: Plavozont 23.5.2012, 06:51
Подскажите есть ли способ подсоединить файл к форме кроме обычного - нажать "выбрать файл" и выбрать файл, например с помощью File API, FileSystem API или ещё как? Мне по сути нужно обойти непродуманную систему на сервере, которая принимает файлы-запросы содержащие XML и отвечает на них файлом-ответом в виде XML. По скольку отправить мне на сервер нужно очень много запросов которые я создаю по данным базы данных, то делать кучу файлов а потом по одному загружать их на сервер не очень весело. Я бы хотел программно имитировать эти файлы и отправлять их с формы на сервер. Причём именно с HTML формы, из php или других серверных средств отправить не получится.

Автор: Plavozont 23.5.2012, 08:11
Может быть можно отправить XMLHttpRequest так чтобы на сервере переменная files существовала, знать бы только как.

Автор: Aliance 23.5.2012, 09:44
Отправить файл без ведома пользователя? А самому-то подумать, можно ли такое?
А если Вы попробуете отправить файл C:/allmypasswords.txt?  smile 

Автор: Plavozont 23.5.2012, 10:23
Цитата

Отправить файл без ведома пользователя? А самому-то подумать, можно ли такое?
А если Вы попробуете отправить файл C:/allmypasswords.txt?  smile 


Ды нет, содержимое файла я сгенерирую программно, реальный файл мне отправлять не нужно, мне нужно просто чтобы сервер думал что ему прислали файл, то есть переменная $_FILES на сервере содержала мои эти данные.

Автор: Aliance 23.5.2012, 15:04
То есть вы хотите:
- сгенерировать файл на сервере
- послать файл клиенту
- на клиенте файл отправить серверу
- на сервере работать с ним

Вопрос: пункты 2 и 3 зачем? Только ради того, чтобы файл был именно в переменной $_FILES?

Автор: Plavozont 25.5.2012, 10:37
То есть я хочу:
- На своём сервере сгенерировать содержимое файла
- Послать его клиенту
- С клиента отправить под видом файла это содержимое на чужеродный сервер на котором работает недописанная, недопродуманная, недотестированная программа которая XML-запросы считывает из файла.
- Принять с этого сервера XML-ответ.

Отправить туда файл отсабмитив форму я могу но тогда файлов будет очень много и процесс получится утомительный а проделывать его нужно ещё очень долго. С клиента я файл отправляю по VipNet'у, а на сервере моём VipNet'а нету, вот и получается полная  smile (неразбериха).

Автор: Plavozont 25.5.2012, 21:40
И-хи-хи-хи-хи user posted image

Код

var BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder;
var bb = new BlobBuilder();

bb.append('содержимое_файла');
var blob = bb.getBlob('text/xml');

var formData = new FormData();
formData.append('file_on_form', blob);

var xhr = new XMLHttpRequest();
xhr.open('POST', url, false);
xhr.send(formData); // multipart/form-data
var xmlrespose=xhr.responseText


По мотивам
http://stackoverflow.com/questions/6133800/html5-file-api-readasbinarystring-reads-files-as-much-larger-different-than-fil/6142797#6142797
http://stackoverflow.com/questions/8390855/how-to-instantiate-a-file-object-in-javascript

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)