如何将文件上传到s3fs并获取公共网址?

时间:2017-03-07 01:06:54

标签: javascript node.js amazon-s3

我正在尝试使用nodejs将文件上传到amazon s3。我能够上传,并创建一个桶。但是,上载的返回值不包含链接到该文件的URL。有谁知道如何获取网址?以及如何将文件公开以便我可以访问它,因为我正在尝试将图像上传到我的网站

var multer = require('multer');
var AWS= require('aws-sdk');

var fs = require('fs');

var S3FS = require('s3fs');

var s3fsImpl = new S3FS('bucketName',{
    accessKeyId:'************',
    secretAccessKey:'***************'
});

s3fsImpl.create();

var multiparty = require('connect-multiparty'),
    multipartyMiddleware = multiparty();

router.use(multipartyMiddleware);


router.post('/upload',function(req,res){

    console.log(JSON.stringify(req.files));
    var file = req.files;
    var stream = fs.createReadStream(file.fileUpload.path);
   return s3fsImpl.writeFile(file.fileUpload.originalFilename, stream, 'public-read').then(function(data){
        fs.unlink(file.fileUpload.path, function(err){
            console.error(err);
        })
    });
   res.send('Sucessfully uploaded to Amazon S3 server');
});

1 个答案:

答案 0 :(得分:0)

如果您使用的是JavaScript / Node,则应使用官方AWS开发工具包而不是S3FS。

例如:putObject() function

使用该函数时,有一个app.__version__参数指定对象是否应公开:

ACL

或者,可以使用 Bucket Policy 授予对整个存储桶或子目录的访问权限。