如何使用nodejs在亚马逊S3上传图像并将其公开

我正在使用下面的代码上传在亚马逊S3上的图像,但它不公开。 还有什么其他的参数需要传递给公众。

var AWS = require('aws-sdk'); AWS.config.region = 'us-west-2'; var s3bucket = new AWS.S3({params: {Bucket: 'myBucket'}}); s3bucket.createBucket(function() { var params = {Key: 'myKey', Body: 'Hello!'}; s3bucket.upload(params, function(err, data) { if (err) { console.log("Error uploading data: ", err); } else { console.log("Successfully uploaded data to myBucket/myKey"); } }); }); 

在s3桶上传数据时使资源公开。 我可以从任何地方下载该链接。

去尝试一下:

 var s3bucket = new AWS.S3({ region: Constant.AWS_S3_REGION }); console.log(filename); var params = { Key: filename, Body: fs.createReadStream(filepath), Bucket: Constant.AWS_S3_BUCKET, ACL:'public-read-write' }; s3bucket.upload(params, cb) 

干杯…!!!!

为了使数据在你的桶中公开,请将以下内容转换为

 var params = {Key: 'myKey', Body: 'Hello!'}; 

如下:

 var params = {Key: 'myKey', Body: 'Hello!', ACL: 'public-read'}; 

为了更好的理解,按照这个好教程

快乐帮助!

对不起我以前的代码是

 var express = require('express'); var app = express(); var bodyParser = require('body-parser'); app.use(bodyParser.json()); // support json encoded bodies app.use(bodyParser.urlencoded({ extended: true })); var multipart = require('connect-multiparty'); var multipartMiddleware = multipart(); var fs = require('fs'), S3FS = require('s3fs'), s3fsImpl = new S3FS('****', { accessKeyId: '***', secretAccessKey: '**********' }); // Create our bucket if it doesn't exist s3fsImpl.create(); app.post('/api',multipartMiddleware, function (req, res) { res.send(req.body, req.files); var file = req.files.file; var stream = fs.createReadStream(file.path); return s3fsImpl.writeFile(file.originalFilename, stream).then(function () { fs.unlink(file.path, function (err) { if (err) { console.error(err); } }); res.status(200).end(); }); });