Вы можете использовать модуль superagent (https://github.com/visionmedia/superagent), который поддерживает загрузку файлов с помощью formData. Затем в бэкэнде необходимо использовать multer ( https://github.com/expressjs/multer), чтобы получить файл.
В файле внешнего интерфейса
//Method to do the request
superagent
.post(/register")
.attach("avatar", uploadedImage)
uploadedImage содержит изображение
В бэкэнд-файле
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
import fs from 'fs-extra'
exports.uploadImage = ((name, image) => {
AWS.config.update({ 'region': process.env.GROUP_REGION, 'accessKeyId': process.env.AWS_ACCESS_KEY_ID, 'secretAccessKey': process.env.AWS_SECRET_KEY })
var s3Bucket = new AWS.S3({ params: { Bucket: process.env.S3_BUCKET_NAME } })
var data = { Key: name, Body: image }
return new Promise((resolve, reject) => {
s3Bucket.putObject(data, function (err, data) {
if (err) {
console.log('Error uploading data: ', data)
reject(err)
} else {
console.log('succesfully uploaded the image!')
resolve(data)
}
})
})
})
router.post('/register', upload.single('avatar'), (req, res, next) => {
return fs.readFile(req.file.path)
.then(content => {
uploadImage("File.jpg", content);
})
})
С этим кодом каждый раз, когда вы загружаете файл / регистрируетесь с содержимым файла в данных формы, ваше изображение будет храниться в папке / uploads на вашем бэкэнде, а затем в вашей учетной записи S3. После загрузки вы можете удалить файл из папки загрузки с помощью
fs.remove(req.file.path)