Человек, а как Express можно было прочитать клиентский файл по пути? Файлы выгружаются / отправляются в запросе POST.
Используйте парсер тела, который поддерживает загрузку файла multipart/form-data
, например mutler , чтобы проанализировать файл из запроса и загрузить его в S3 .
В примере ...
html
<html>
<!-- don't forget enctype parameter -->
<form method="post" action="/upload" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" />
</form>
</html>
сервер узла с использованием AWS и multer вручную
const multer = require('multer'),
AWS = require('aws-sdk'),
S3 = new AWS.S3({
...
});
router.post('/', multer().single('file'), (req, res) => {
// debug req.file
console.log(req.file);
S3.upload({
Bucket: '...',
Key: req.file.originalname,
Body: req.file.buffer
}, (err, res) => {
if (err) throw err;
res.json({
message: "File uploaded to S3"
});
});
});
сервер узла с использованием multer-s3
const multer = require('multer'),
multerS3 = require('multer-s3'),
AWS = require('aws-sdk'),
S3 = new AWS.S3({
...
});
let upload = multer({
storage: multerS3({
s3: s3,
bucket: '...',
key: (req, file, cb)
=> cb(null, file.originalname), // or whatever Key you like
})
});
router.post('/', upload.single('file'), (req, res) => {
res.json({
message: "File uploaded to S3"
});
});