Node.js 如何使用multer在s3存储桶中动态指定要上载到的文件路径
所以,我对Nodejs很陌生,我正在尝试实现一个API来将文件上传到s3存储桶。但是,我想指定每个文件上传到的文件路径作为可选参数。最简单的方法是什么?这是上传文件的原始代码Node.js 如何使用multer在s3存储桶中动态指定要上载到的文件路径,node.js,express,multer,aws-sdk-nodejs,Node.js,Express,Multer,Aws Sdk Nodejs,所以,我对Nodejs很陌生,我正在尝试实现一个API来将文件上传到s3存储桶。但是,我想指定每个文件上传到的文件路径作为可选参数。最简单的方法是什么?这是上传文件的原始代码 require("dotenv/config"); const express = require("express"); const multer = require("multer") const AWS = require("aws-sdk&quo
require("dotenv/config");
const express = require("express");
const multer = require("multer")
const AWS = require("aws-sdk")
const app = express();
const port = process.env.PORT || 3000;
const s3 = new AWS.S3({
accessKeyId: process.env.AWS_ID,
secretAccessKey: process.env.AWS_SECRET,
region: process.env.AWS_REGION
})
const storage = multer.memoryStorage({
destination: (req, file, callback) => {
callback(null, "")
}
})
const upload = multer({storage}).single("file");
app.post("/upload", upload, (req, res) => {
let myFile = req.file.originalname
const params = {
Bucket: process.env.AWS_BUCKET_NAME,
Key: myFile,
Body: req.file.buffer,
}
s3.upload(params, (error, data) => {
if(error) {
res.status(500).send(error)
}
res.status(200).send(data)
})
});
app.listen(port, () => {
console.log(`Server is up at ${port}`)
});
如果您试图将文件上载到文件夹,AWS s3会通过添加前缀来模拟此操作。您可以通过添加文件夹名称来更改密钥参数
app.post(“/upload/:directory”),upload,(req,res)=>{
让myFile=req.file.originalname
让path=req.params.directory
常量参数={
Bucket:process.env.AWS_Bucket_NAME,
键:`${path}/${myFile}`,
正文:req.file.buffer,
}
s3.上传(参数,(错误,数据)=>{
如果(错误){
资源状态(500).发送(错误)
}
资源状态(200).发送(数据)
})
});代码>