Загрузите файл в AWS S3 размером более 5 ГБ. - PullRequest
0 голосов
/ 21 февраля 2019

Я использую S3 Storage.При загрузке файлов через Node, Loopback4 и на стороне клиента я использую Angular 6.

Я могу загрузить файл в S3 до 5 ГБ.Работает нормально.Но невозможно загрузить файл размером более 5 ГБ.

Ниже моего рабочего кода

const s3 = new AWS.S3({
  accessKeyId: process.env.BUCKET_ACCESS_KEY_ID,
  secretAccessKey: process.env.BUCKET_SECRET_ACCESS_KEY,
  region: process.env.BUCKET_REGION,
});

@post('/upload-multipart', {
    responses: {
      '200': {
        description: 'Todo model instance',
        content: { 'application/json': { schema: { 'x-ts-type': null } } },
      },
    },
  })
  async upload_multiparty(
    @requestBody({
      description: 'multipart/form-data value.',
      required: true,
      content: {
        'multipart/form-data': {
          'x-parser': 'stream',
          schema: { type: 'object' },
        },
      },
    })
    request: Request,
    @inject(RestBindings.Http.RESPONSE) response: Response,
  ): Promise<void> {
    const startTime:Date = new Date();
    const form = new multiparty.Form();
    form.on('part', function (part) {
      if (!part.filename) {
        // filename is not defined when this is a field and not a file
        console.log('got field named ' + part.name);
        part.resume();
      }
      let fileName = "";

      if (part.filename) {
        if (!fileName) fileName=part.filename;

    console.log('File upload start...');
        var opts = {
          Bucket: process.env.BUCKET_NAME,
          Key: 'Test/' + fileName,
          Body: part,
          ContentLength: part.byteCount,
        };
        s3.putObject(opts, function (err, data) {
          if (err) {
            console.log('Put object error' + err);
            throw err;
          }
          const endTime:Date=new Date();
          const diffMs = (endTime.getTime()-startTime.getTime());
          console.log('Total time taken to upload - '+Math.round(diffMs/60000) + ' minutes');
          console.log("File upload completed!", data);
        }).on('httpUploadProgress', function (progress) {
          console.log('Upload Progress : '+ Math.round(progress.loaded/progress.total) * 100 +'%');
        });
      }

      part.on('error', function (err) {
        console.log('Part error');
        // decide what to do
        console.log(err);
      });
    });
    form.parse(request);         
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...