загрузка нескольких файлов в s3 с помощью sailsjs - PullRequest
0 голосов
/ 02 августа 2020

Я не использую пакет multer, потому что я не использую express, поэтому я не уверен, как multer может работать с sailsjs

В любом случае, я пытаюсь загрузить несколько файлов в s3, сначала я работал с for loop, который не работал, потому что l oop синхронный, а загрузка файлов асинхронная.

Но потом я погуглил, что использование рекурсивного режима будет работать, поэтому я попробовал, но каким-то образом это все равно не сделал.

Файлы загружены, но размер не подходит для всех. Каким-то образом размер может быть больше / меньше, чем когда я загружаю файл, скажем, если это файл do c, либо я получаю сообщение об ошибке, говоря, что это не файл msdo c, либо то, что внутри, все зашифровано. Если это pdf-файл, он скажет, что не удалось открыть pdf-файл.

Если я попробую только с одним файлом, он иногда работает, но не всегда.

Я сделал что-то не так коды ниже?

s3_upload_multi: async function(req){
    try {
        let fieldName = req._fileparser.upstreams[0].fieldName;
        let files = req.file(fieldName)._files;
        let return_obj = [];

        const upload_rec = files => {
            if (files.length <= 0) return return_obj;
            const f = files.pop();
            const fileUpload = f.stream;

            const s3 = new AWS.S3();
            // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
            s3.putObject(({  // uses s3 sdk
                Bucket: sails.config.aws.bucket,
                Key: 'blahblahblahblahblah',
                Body: fileUpload._readableState.buffer.head.data,  // buffer from file
                ACL: 'public-read',
              }, function ( err, data ) {
                if (err) reject(err);
                
                return_obj.push(data);
                console.log(return_obj, 'return_obj');
            });

            return upload_rec(files);
        };

        upload_rec(files);


    } catch (e) {
        console.log(e, 'inside UploadService');
        return false;
    }
}

Заранее благодарим за любые советы и предложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...