gpt4 book ai didi

javascript - 更改 BlobBuilder 中的文件名以在 XHR 上作为 FormData 传递

转载 作者:行者123 更新时间:2023-11-29 09:57:41 26 4
gpt4 key购买 nike

我目前正在尝试将 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);

但是标题是按照浏览器喜欢的方式发送的,例如在 Chrome 上:

Content-Disposition: form-data; name="file"; filename="blob"
Content-Type: application/octet-stream;

我考虑过使用 FileWriter API 将它保存到一个临时文件,然后上传它,但那是不对的。

回答时,请考虑:

  • 服务器无法修改,我也不愿意选择其他服务器提供商。
  • 它必须至少在 Firefox 和 Chrome 上运行(我的应用程序已经仅限于这两种浏览器)。

最佳答案

我自己解决了这个问题,多亏了一个 Chromium 问题让我找到了 w3c 标准草案的答案 XMLHttpRequest .基本上我应该改变:

fdata.append('file', bb.getBlob("application/octet-stream"));

到:

fdata.append('file', bb.getBlob("application/octet-stream"), obj.filename);

它给出了预期的结果。

关于javascript - 更改 BlobBuilder 中的文件名以在 XHR 上作为 FormData 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8495301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com