我正在使用express + multer-s3将文件上传到AWS S3服务。
使用下面的代码,我可以将文件上传到S3Bucket,但直接上传到Bucket中。
我想把它们上传到桶里的一个文件夹里。
我无法找到这样做的选择。
下面是代码
AWS.config.loadFromPath("path-to-credentials.json");
var s3 = new AWS.S3();
var cloudStorage = multerS3({
s3: s3,
bucket: "sample_bucket_name",
contentType: multerS3.AUTO_CONTENT_TYPE,
metadata: function(request, file, ab_callback) {
ab_callback(null, {fieldname: file.fieldname});
},
key: function(request, file, ab_callback) {
var newFileName = Date.now() + "-" + file.originalname;
ab_callback(null, newFileName);
},
});
var upload = multer({
storage: cloudStorage
});
router.post("/upload", upload.single('myFeildName'), function(request, response) {
var file = request.file;
console.log(request.file);
response.send("aatman is awesome!");
});
4条答案
按热度按时间r6hnlfcb1#
S3并不总是有文件夹(参见http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html),它会通过在文件名中添加一个用/分隔的字符串来模拟文件夹。
例如:
slwdgvem2#
我的动态目标路径的解决方案。希望这对大家有帮助!
如何致电:
“profile image”是传递到主体中的文件的键。
“user”是目标文件夹的路径。2你可以传递任何路径,包括文件夹和子文件夹。3这样我的文件就被放到了我的bucket里一个叫“user”的文件夹里。
yjghlzjz3#
还有另一种很好的方法!在你写好你的桶名之后,在那里加上文件夹名,在前面加一个斜杠。
k3fezbri4#
为了通过指定动态目录来上传文件,我创建了一些功能/中间件,它们运行得非常好。
已重写存储函数以存储动态目标。
新创建的中间件
调用中间件的并在参数中指定目的地,然后它将上传该特定目录中的数据。