gpt4 book ai didi

node.js - 我如何从 mocha/superagent 测试对 amazon-s3 的 CORS 上传调用?

转载 作者:搜寻专家 更新时间:2023-10-31 23:55:03 24 4
gpt4 key购买 nike

我在尝试从 super 代理向 Amazon S3 发出 CORS 请求以上传文件时遇到问题。首先,我向 node.js 服务器请求该策略。我返回一个像这样的 JSON 对象:

{
s3PolicyBase64: '',
s3Signature: '',
s3Key: '',
s3ObjectKey: 'ftriana3185/inputData/input_fdc2f7f4b050c5884e5ac60a43bfc0d8ff26d549.csv' }

然后我尝试从 superagent 使用 Node 返回的策略上传本地文件。我的代码如下所示:

it('GET /inputFiles/s3Credential', function(done) {
var csvPath = './files/inputFileResource/countrylist.csv';
var request = {};
request.ext = 'csv';

clientAgent.get(localPath + '/inputFiles/s3Credential').send(request).end(function(response) {
var s3PolicyBase64 = response.body.s3PolicyBase64;
var s3Signature = response.body.s3Signature;
var s3Key = response.body.s3Key;
var s3ObjectKey = response.body.s3ObjectKey;

var request = clientAgent.post('bucket-name.s3.amazonaws.com')
.type('form')
.field('key', s3ObjectKey)
.field('AWSAccessKeyId', s3Key)
.field('acl', 'public-read')
.field('policy', s3PolicyBase64)
.field('signature', s3Signature)
.attach('mycsv', csvPath).end(function(response){
console.log(response);
});
});
});

我确定问题出在我正在执行来自 superagent 的请求的表单中,因为我还有一个工作正常的 html 表单。那么,为此目的使用 superagent 的正确形式是什么?

最佳答案

我今天尝试这样做,发现它因 HTTP 400 而失败。我猜 superagent 不遵守 http://aws.amazon.com/articles/1434 中描述的精确表单布局。 .

我建议您改用“表单数据”模块 ( https://github.com/felixge/node-form-data )。

这对我有用:

var FormData = require('form-data');
var fs = require('fs');

...

it('should upload to S3 with a multipart form', function (done) {
var policy = {/* your S3 policy */};
var form = new FormData();
form.append('AWSAccessKeyId', policy.AWSAccessKeyId);
form.append('key', policy.key);
form.append('policy', policy.policy);
form.append('signature', policy.signature);
form.append('file', fs.createReadStream('path/to/file'));
form.submit('https://YOUR_BUCKET.s3.amazonaws.com/', function (err, res) {
if (err) return done(err);
res.statusCode.should.be.exactly(204);
done();
});
});

关于node.js - 我如何从 mocha/superagent 测试对 amazon-s3 的 CORS 上传调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21464000/

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