Когда я пытаюсь загрузить видеофайл в корзину S3, загрузка этого файла занимает очень много времени.Но видео файл загружен, это не проблема.Но время загрузки довольно велико, однако размер моего видеофайла составляет всего 30 МБ.Так что это не крутой способ загрузить видео файлы из моего приложения.Мне нужно загрузить несколько больших видеофайлов в корзину S3, которые могут занимать около 200 МБ на видео.Поэтому мне нужен лучший способ загрузить эти видеофайлы в корзину S3.
Вот мой фрагмент кода,
const express = require('express');
const app = express();
const AWS = require('aws-sdk');
const fs = require('fs');
const fileType = require('file-type');
const bluebird = require('bluebird');
const multiparty = require('multiparty');
const cors = require('cors');
app.use(cors());
app.options('*', cors());
// configure the keys for accessing AWS
AWS.config.update({
accessKeyId: "xxx",
secretAccessKey: "yyy"
});
// configure AWS to work with promises
AWS.config.setPromisesDependency(bluebird);
// create S3 instance
const s3 = new AWS.S3();
// abstracts function to upload a file returning a promise
const uploadFile = (buffer, name, type) => {
const params = {
ACL: 'public-read',
Body: buffer,
Bucket: "bucket-name",
ContentType: type.mime,
Key: `${name}.${type}`
};
return s3.upload(params).promise();
};
// Define POST route
app.post('/test-upload', (request, response) => {
const form = new multiparty.Form();
response.header("Access-Control-Allow-Origin", "*");
form.parse(request, async (error, fields, files) => {
if (error) throw new Error(error);
try {
const path = files.file[0].path;
const buffer = fs.readFileSync(path);
const type = fileType(buffer);
const timestamp = Date.now().toString();
const fileName = `test/${timestamp}-lg`;
const data = await uploadile(buffer, fileName, type);
console.log("Data", data);
return response.status(200).send(data) +" " + data;
} catch (error) {
return response.status(400).send(error);
}
});
});
app.get('/', function(req, res){
res.send('Hello!')
})
var listener = app.listen(9000);
console.log('Server up and running...' + listener.address().address);
Заранее спасибо.