Chi*_*tor 3 javascript multipartform-data xmlhttprequest mime-types
我正在尝试将ArrayBuffer上传到服务器(我无法更改),期望我以多部分/表格数据格式上传文件.服务器从Content-Disposition部件中提取filename将保存的部分,并在Content-type提供文件时将使用的MIME类型下.目前,我成功上传文件:
var xhr = new XMLHttpRequest();
var fdata = new FormData();
var bb;
if (WebKitBlobBuilder) {
bb = new WebKitBlobBuilder();
} else if (MozBlobBuilder) {
bb = new MozBlobBuilder();
} else if (BlobBuilder) {
bb = new BlobBuilder();
}
bb.append(obj.array);
fdata.append('file', bb.getBlob("application/octet-stream"));
xhr.open("POST", url, true);
xhr.send(fdata);
Run Code Online (Sandbox Code Playgroud)
但是标题会像浏览器一样在Chrome上发送,例如:
Content-Disposition: form-data; name="file"; filename="blob"
Content-Type: application/octet-stream;
Run Code Online (Sandbox Code Playgroud)
我打算用FileWriter API将它保存到一个临时文件,然后上传它,但这是不对的.
在回答时,请考虑:
我自己解决了这个问题,感谢Chromium问题指出了我对w3c标准草案XMLHttpRequest的回答.基本上我应该改变:
fdata.append('file', bb.getBlob("application/octet-stream"));
Run Code Online (Sandbox Code Playgroud)
至:
fdata.append('file', bb.getBlob("application/octet-stream"), obj.filename);
Run Code Online (Sandbox Code Playgroud)
并且它给出了期望的结果.