Node.js 节点JS AWS S3文件上传。如何获得公共URL响应
我正在使用NodeSDK将一个文件上传到AmazonS3 文件上传工作正常,但我想获取文件的公共url以发送回客户端 目前我得到的答复是:Node.js 节点JS AWS S3文件上传。如何获得公共URL响应,node.js,express,amazon-s3,multer,Node.js,Express,Amazon S3,Multer,我正在使用NodeSDK将一个文件上传到AmazonS3 文件上传工作正常,但我想获取文件的公共url以发送回客户端 目前我得到的答复是: Successfully uploaded data { ETag: '"957cd1a335adf5b4000a5101ec1f52bf"' } 这是我的密码。我正在使用Node Express服务器和Multer来处理上传 app.use(multer({ // https://github.com/expressjs/multer des
Successfully uploaded data { ETag: '"957cd1a335adf5b4000a5101ec1f52bf"' }
这是我的密码。我正在使用Node Express服务器和Multer来处理上传
app.use(multer({ // https://github.com/expressjs/multer
dest: './public/uploads/',
limits : { fileSize:100000 },
rename: function (fieldname, filename) {
var time = new Date().getTime();
return filename.replace(/\W+/g, '-').toLowerCase() + time;
},
onFileUploadData: function (file, data, req, res) {
// file : { fieldname, originalname, name, encoding, mimetype, path, extension, size, truncated, buffer }
var params = {
Bucket: creds.awsBucket,
Key: file.name,
Body: data,
ACL: 'public-read'
};
var s3 = new aws.S3()
s3.putObject(params, function (perr, pres) {
if (perr) {
console.log("Error uploading data: ", perr);
} else {
console.log("Successfully uploaded data", pres);
}
});
}
}));
app.post('/upload-image', function(req, res){
if(req.files.file === undefined){
res.send("error, no file chosen");
}
});
使用而不是putObject。
它将返回位置中的公共url键如何使其工作,我得到“初始化中间件类型错误:app.use()需要中间件函数”消息
putObject(…).promise()
工作正常,但是upload(…).promise()
未定义。为什么他们会这样做。@Richard做'putObject(…).promise()'返回位置键中的公共url,因为我自己找不到它。以下是2016年7月的一些信息:承诺目前仅支持返回请求对象的操作。由于s3.upload是一个自定义函数,它返回ManagedUpload的实例而不是请求,因此该操作当前不支持承诺