Загрузка S3 занимает слишком много времени - PullRequest
0 голосов
/ 09 декабря 2018

Когда я пытаюсь загрузить видеофайл в корзину 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);

Заранее спасибо.

...