Я хочу отправить файл в составную форму, загрузить его в Amazon S3 Bucket и вернуться к пользовательской ссылке на файл.
const express = require('express'),
aws = require('aws-sdk'),
bodyParser = require('body-parser'),
multer = require('multer'),
multerS3 = require('multer-s3');
aws.config.update({
secretAccessKey: 'secret',
accessKeyId: 'secret',
region: 'us-east-2'
});
const app = express(),
s3 = new aws.S3();
app.use(bodyParser.json());
const upload = multer({
storage: multerS3({
s3: s3,
bucket: 'some-name',
key: (req, file, cb) => {
console.log(file);
cb(null, file.originalname); //use Date.now() for unique file keys
}
})
});
app.post('/upload', upload.array('file',1), (req, res, next) => {
res.send("How to return File URL?");
});
app.listen(3000);
Как я могу получить прямой URL-адрес файла?
Вы можете получить его из свойства местоположения файла.
Не получая таким образом полного URL-адреса, возвращается
undefined
. — person 0x77dev; 08.06.2020(Multer NPM) уже написано в документации:
.single (fieldname) = ›(req.file)
Примите один файл с именем fieldname. Единственный файл будет сохранен в req.file.
.array (fieldname [, maxCount]) = ›(req.files)
Примите массив файлов, все с именем fieldname. При необходимости выдается ошибка, если загружено более maxCount файлов. Массив файлов будет сохранен в req.files.
.fields (fields) = ›(req.files)
Принять сочетание файлов, указанных в полях. Объект с массивами файлов будет храниться в req.files.
.any () = ›(req.files)
Принимает все файлы, поступающие по сети. Массив файлов будет храниться в req.files.
.никто()
Принимайте только текстовые поля. При загрузке любого файла будет выдана ошибка с кодом LIMIT_UNEXPECTED_FILE.
Есть ли способ получить взамен URL загруженного объекта? — person 0x77dev; 11.08.2020
@Deepak Кстати, это ответ на ваш вопрос, вы попадете внутрь файлового объекта
file.location
. — person 0x77dev; 11.08.2020@ Turivishal — Вот как я реализовывал. См. Мой вопрос по тому же stackoverflow.com/questions/63358933/ — person 0x77dev; 11.08.2020
Просто используйте
в ответе об успехе