Update:.为了将来的参考,亚马逊现在根据询问时的文档更新了文档.根据@Loren Segal的以下 comments :-

我们已经更正了最新预览版本中的文档,以正确记录此参数.抱歉搞砸了!


我正在试用the AWS SDK for Node.Js的开发者预览版,想用putObject上传一个压缩的tarball到S3.

根据the documentationBody参数应该是...

正文-(Base64编码数据)

...因此,我正在try 以下代码...

var AWS = require('aws-sdk'),
    fs = require('fs');

// For dev purposes only
AWS.config.update({ accessKeyId: 'key', secretAccessKey: 'secret' });

// Read in the file, convert it to base64, store to S3
fs.readFile('myarchive.tgz', function (err, data) {
  if (err) { throw err; }

  var base64data = new Buffer(data, 'binary').toString('base64');

  var s3 = new AWS.S3();
  s3.client.putObject({
    Bucket: 'mybucketname',
    Key: 'myarchive.tgz',
    Body: base64data
  }).done(function (resp) {
    console.log('Successfully uploaded package.');
  });

});

虽然我可以在S3中看到该文件,但如果我下载并try 解压缩它,我会得到一个错误,即该文件已损坏.因此,我的"base64编码数据"方法似乎已关闭.

有人能帮我用putObject上传一个二进制文件吗?

推荐答案

不需要将缓冲区转换为base64字符串.只要将body设置为data,它就会工作.

Node.js相关问答推荐

Google Drive API返回200(HTTP成功)用于测试pdf输出,但没有文件

Firebase-admin筛选器.或只考虑第一个WHERE子句

在Android Studio中react 本机构建失败:未正确检测到Node.js版本

Gmail API获取附件PDF未正确呈现.我遗漏了什么?

在全局对象上声明的函数

处理嵌套元素时,使用xml2js库解析XML时发生错误

为什么我的react 表单不能正常工作?

discordjs如何添加所有意图/权限

Web3.js 脚本在监听 CreatedPairs 时退出

baseurl64 缓冲区解码

通过 npm 导入 Sass

NodeJS为exec设置环境变量

ISODate 未定义

用于排除多个文件的 node.js glob 模式

容器之间的 Docker HTTP 请求

React Native ios build:找不到 node

如何在不全局安装的情况下在 Node REPL 中要求 node 模块?

对不同对象中的函数使用相同的键时,V8 中的函数调用缓慢

Meteor - collection.find() 总是返回所有字段

在 Node.js 中写入 CSV