javascript - 尝试上传到 Amazon S3 时出现“不支持的正文负载对象”
问题描述
我想将文件从我的前端上传到我的 Amazon S3 (AWS)。
我正在使用 dropzone,所以我转换我的文件并将其发送到我的后端。
在我的后端我的文件是这样的:
{ fieldname: 'file',
originalname: 'test.torrent',
encoding: '7bit',
mimetype: 'application/octet-stream',
buffer: { type: 'Buffer', data: [Array] },
size: 7449 },
当我尝试使用我的函数上传文件时:
var file = data.patientfile.file.buffer;
var params = { Bucket: myBucket, Key: data.patientfile.file.fieldname, Body: file };
s3.upload(params, function (err, data) {
if (err) {
console.log("******************",err)
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
我得到错误:
不支持的正文有效负载对象
你知道如何发送我的文件吗?
我试图发送它putobject
并得到类似的错误。
解决方案
我认为您可能需要将文件内容(在这种情况下可能是 data.patientfile.file.buffer)转换为二进制文件
var base64data = new Buffer(data, 'binary');
所以参数会像:
var params = { Bucket: myBucket, Key: data.patientfile.file.fieldname, Body: base64data };
或者,如果我弄错了并且缓冲区已经是二进制的,那么您可以尝试:
var params = { Bucket: myBucket, Key: data.patientfile.file.fieldname, Body: data.patientfile.file.buffer};
推荐阅读
- javascript - 如何在 reactJS 中使用 if-else 语句内联?
- python - Django - 上传文件时更改临时路径
- mysql - 如何获取多对多关系的某一部分的所有列数据以逗号连接,并且只获取一行?
- ansible - 将 .env 文件中的环境变量传递给 Ansible 任务/剧本
- javascript - 如何从续集制作 bulkCreate() 以不创建新数据而只覆盖现有数据
- c++11 - 重新分配 lambda 时,为什么叫删除复制分配而不是移动分配?
- c++ - 如何在 C++ 中按特定顺序仅对数组的某些部分进行排序?
- python - np.random.choice 是否有 Tensorflow 等效项可以从离散集中随机抽样?
- api - 在詹金斯管道中捕获空手道 api 测试失败
- extjs4 - 如何模拟隐藏无限网格的下一个负载?