要实现AWS S3和ExpressJS之间的图片上传,可以按照以下步骤操作:
npm install aws-sdk express multer
upload.js
文件,并添加以下代码:const express = require('express');
const multer = require('multer');
const AWS = require('aws-sdk');
const app = express();
const port = 3000;
// AWS配置
AWS.config.update({
accessKeyId: 'YOUR_AWS_ACCESS_KEY_ID',
secretAccessKey: 'YOUR_AWS_SECRET_ACCESS_KEY',
region: 'YOUR_AWS_REGION'
});
const s3 = new AWS.S3();
// Multer配置
const upload = multer({
storage: multer.memoryStorage(),
limits: {
fileSize: 5 * 1024 * 1024 // 限制文件大小为5MB
}
});
// 路由
app.post('/upload', upload.single('image'), (req, res) => {
const file = req.file;
// 将图片上传到S3
const params = {
Bucket: 'YOUR_S3_BUCKET_NAME',
Key: file.originalname,
Body: file.buffer,
ACL: 'public-read' // 设置访问权限为公共读取
};
s3.upload(params, (err, data) => {
if (err) {
console.error(err);
res.status(500).send('图片上传失败');
} else {
console.log(data);
res.send('图片上传成功');
}
});
});
// 启动服务器
app.listen(port, () => {
console.log(`服务器运行在 http://localhost:${port}`);
});
将上述代码中的YOUR_AWS_ACCESS_KEY_ID
、YOUR_AWS_SECRET_ACCESS_KEY
、YOUR_AWS_REGION
和YOUR_S3_BUCKET_NAME
替换为您的AWS凭证和S3存储桶的相关信息。
在终端中运行以下命令启动Express服务器:
node upload.js
http://localhost:3000/upload
。确保您的请求中包含一个名为image
的文件字段。这是一个基本的例子,您可以根据自己的需求进行修改和扩展。