Несколько загрузок html5 вместе с ajax - PullRequest
0 голосов
/ 01 июля 2011

Я пытаюсь использовать атрибут множественной загрузки HTML5 для загрузки файлов.Я знаю, что это не будет работать с IE и вернусь к загрузке одного файла.Также я обнаружил, что некоторые недействительные теги HTML, такие как min max, позволяют Opera делать то же самое.

Я пытаюсь сделать следующее: Кнопка обзора может выбрать несколько файлов.Но ajax должен отправлять файлы один за другим.Мой сценарий примерно такой: пользователь выбирает 5 файлов и начинает загрузку.Теперь ajax должен сначала отправить первый файл, затем второй и так далее.Серверный скрипт что-то делает с файлом и возвращает некоторые данные.теперь, как только одна загрузка файла завершена, он должен отобразить эту часть результата.Так как пользователь выбирает изображения и начинает загрузку, результаты появляются сразу после загрузки каждого файла (а не после загрузки всех файлов).

Я попробовал что-то вроде этого:

 function handleFiles(files)
  { alert(files.length); //properly returns the number of files selected
    for (var i = 0; i < files.length; i++) {
  new FileUpload(files[i])
  }
  }

  function FileUpload(file) {
  var reader = new FileReader();

  var xhr = new XMLHttpRequest();
  this.xhr = xhr;

  xhr.open("POST", "portfolio/add_media");
  reader.onload = function(evt) {
    xhr.sendAsBinary(evt.target.result);
  };
  reader.readAsBinaryString(file);
}

после прочтения учебника на mozilla , но в итоге я пропускаю парам.

.поэтому кто-то может предложить мне чистое решение для этого

Еще несколько деталей: Когда я передаю один файл (без нескольких атрибутов), мой сервер получает:

"image" => [# , @ headers = "Content-Disposition:form-data; name = \ "picture [image] [] \"; filename = \ "Desert.jpg \" \ r \ nContent-Type: image / jpeg \ r \ n ", @ content_type =" image / jpeg ", @ original_filename = "Desert.jpg">]}}

Но когда я использую несколько атрибутов и отправляю с использованием xhr, я могу получить только один параметр файла.Как мне получить остальные параметры?отправка действия вещь 1020 *

1 Ответ

1 голос
/ 01 июля 2011

Вы просто отправляете данные файла на сервер, без какой-либо кодировки. Чтобы сервер знал, как его обрабатывать, вам необходимо правильно закодировать ваши данные (multipart/form-data кодировка). Самый простой способ - использовать объект FormData: https://developer.mozilla.org/En/Using_XMLHttpRequest#Sending_files_using_a_FormData_object. Только для того, чтобы вместо data.append("CustomField", "This is some extra data") вы написали бы data.append("file1", event.target.result).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...