0

我可以使用以下表单成功地将图像上传到服务器:

<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 表单版本工作正常?

4

1 回答 1

0

比较两个工作流的请求正文。事实证明,Firefox 中的实时 HTTP 标头很有用。

于 2013-06-07T18:05:41.030 回答