3
我目前正在嘗試上傳一個ArrayBuffer到一個服務器(我無法更改),該服務器期望我以多部分/表單數據格式上傳文件。服務器從Content-Disposition
部分提取將被保存的filename
部分,並在Content-type
下提供將在服務文件時使用的MIME類型。目前,我成功的上載文件:更改BlobBuilder中的文件名,作爲XHR上的FormData傳遞
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);
但隨着瀏覽器的喜歡,在Chrome例如頭被髮送:
Content-Disposition: form-data; name="file"; filename="blob"
Content-Type: application/octet-stream;
我已經考慮將其保存到一個臨時的FileWriter API文件,然後上傳它,但那是不正確的。
回答問題時,考慮到:
- 服務器不能修改,也沒有我願意選擇另一個服務器提供商。
- 它必須至少在Firefox和Chrome上運行(我的應用程序僅限於這兩種瀏覽器)。
似乎無法在Firefox中工作,提交了一個錯誤:[link [(https://bugzilla.mozilla.org/show_bug.cgi?id=736324) – Chazz 2012-03-16 00:05:25