Я не использую пакет 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;
}
}
Заранее благодарим за любые советы и предложения