Загрузка изображения FormData в JS

Я могу успешно загрузить изображение на сервер, используя следующую форму:

<form id="upload_form" action="/upload" enctype="multipart/form-data" method="post">
  <input name="image_url" type="file">
  <input id='submit' type="submit" value="Upload">
</form>

Я пытаюсь сделать то же самое, что и выше, но программно, используя объект HTML5 FormData().

var bts_spritesheet;

handleSpritesheetSelection = function(evt) {
  var f, files, reader;
  files = evt.target.files;
  f = files[0];
  reader = new FileReader();
  reader.onload = (function(theFile) {
    function(e) {
      bts_spritesheet = e.target.result;
    };
  })(f);
  return reader.readAsDataURL(f);
};
document.getElementById('upload_spritesheet').addEventListener('change', handleSpritesheetSelection, false);  


Когда пользователь нажимает кнопку отправки, вызывается следующее:

var formData = new FormData();
formData.append('bts_spriteSheet', bts_spritesheet);

var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);

xhr.onload = function(e) {
  return console.log('yay its done');
};
xhr.send(formData);

Мой html просто:

 <input id="upload_spritesheet" type="file">

Я не включал и не говорил о том, что я делаю на стороне сервера, потому что, как я уже сказал, загрузка файла с использованием обычной формы html5 выше работает нормально, поэтому я знаю, что это должен быть мой JS-код.

Может ли кто-нибудь понять, почему код JS выдает ошибку сервера 500, но версия формы html работает нормально?


person Jamie Fearon    schedule 16.02.2013    source источник


Ответы (1)


Сравните тела запросов ваших двух рабочих процессов. Живые заголовки HTTP в Firefox могут оказаться полезными.

person Mark Peterson    schedule 07.06.2013