How to send an http multipart POST request with a Blob in it?(如何发送包含Blob的http多部分POST请求?)
本文介绍了如何发送包含Blob的http多部分POST请求?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用多部分XMLHttpRequest来上传Google Drive帐户上的文件,使用Google文档中描述的语法:
https://developers.google.com/drive/web/manage-uploads#multipart
以下是请求正文的简化示例。
--delim
Content-Type: application/json; charset=UTF-8
*metadata Json object*
--delim
Content-Type: *datatype*
*data*
--delim--
我的问题是:
- 我正在使用JavaScript
- 我必须将数据作为Blob发送
- 我无法使用Google的JavaScript API
- 它必须与Internet Explorer(至少9)兼容。
如您所见,该请求由两个字符串组成,中间有一个BLOB。
但是,如果我进行"a-"+BLOB+"-b"这样的连接,我当然会得到字符串"a-[Object Blob]-b"
那么,我如何发送包含Blob和元数据的请求?
附注:我知道我可以单独发送数据,然后编辑元数据, 但它需要两个请求,一个请求太多...
推荐答案
我找到了答案, 我不得不用Base64编码我的Blob的内容:
var reader = new FileReader
reader.readAsDataURL(blob)
var data = reader.result;
//don't need type informations
data = data.split(",").pop();
并且恰好在请求的第二部分中的"Content-Type"值之后,
我添加了这一行:
'Content-Transfer-Encoding: base64'
现在它起作用了!
请不要担心,在我的代码中,我以异步方式使用了FileReader, 为了简洁起见,我在这里做了简化。这篇关于如何发送包含Blob的http多部分POST请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:如何发送包含Blob的http多部分POST请求?
基础教程推荐
猜你喜欢
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
