如何发送包含Blob的http多部分POST请求?

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请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)