【发布时间】:2020-11-02 15:10:25
【问题描述】:
我正在尝试将文件从 Express ejs 上传到 AWS s3 存储桶,我这样做是成功的,但是当我尝试从我的 index.js 所在位置以外的其他目录或文件夹中选择文件时,它不接受该文件并抛出错误文件未找到。
index.js
'use strict';
const express = require('express');
const app = express();
const multer = require('multer');
const multerS3 = require('multer-s3');
const AWS = require('aws-sdk');
const bodyParser = require('body-parser');
const s3 = new AWS.S3({
accessKeyId: '',
secretAccessKey: ''
});
app.use(bodyParser.urlencoded({extended : true}));
app.set('view engine', 'ejs');
const uploadS3 = multer({
storage: multerS3({
s3: s3,
bucket: '',
metadata: (req, file, cb) => {
cb(null, {fieldName: file.fieldname})
},
key: (req, file, cb) => {
cb(null, Date.now().toString() + '-' + file.originalname)
}
})
});
test.ejs
<html>
<form method="post" action="/upload">
<input type="file" name="file" />
<input type="submit" />
</form>
</html>
route.js
var fileupload = require('../../common/service/file-upload');
//some code in between
app.post('/upload', fileupload.uploadS3.single('file'),(req, res) => {
console.log(req.file);
});
【问题讨论】:
-
你能添加代码如何选择文件吗?
-
我添加了 test.ejs 是我的 express js 文件, 我从中选择文件
-
每当您上传文件时,您需要将属性添加到表单 enctype="multipart/form-data"。 .然后它会工作。我建议你使用multer-s3包在aws上上传文件。npmjs.com/package/multer-s3
-
题外话:不要!!!硬编码您的凭据,使用环境变量
标签: javascript node.js express amazon-s3 file-upload