Загрузка нескольких файлов в Amazon S3 - PullRequest
0 голосов
/ 29 апреля 2018

Мне нужна помощь по загрузке нескольких файлов на Amazon S3. Таким образом, в основном у меня есть три поля ввода для загрузки файлов, два ввода будут принимать 10-20 изображений, а последний ввод - только один для одного изображения и загружать их в Amazon S3 при отправке формы.

Форма, которую я использую для загрузки изображений:

enter image description here

У меня есть ведро и все, что мне нужно, это какое-то решение для загрузки нескольких изображений в Amazon S3.

Я использую PHP в качестве бэкэнда, и на данный момент изображения хранятся на хостинге при отправке формы. Но я буду загружать более 150 ГБ изображений каждый месяц, и мне нужен S3 для размещения этих изображений.

Когда я соединяю форму с Amazon S3 и пытаюсь загрузить более одного изображения, я получаю сообщение «POST требует ровно одну загрузку файла на запрос».

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Вот код NodeJS, который даст вам представление о загрузке всех файлов, а затем отправит ответ обратно в пользовательский интерфейс после завершения загрузки.

Я использую здесь обещания и метод обещания., Который разрешит все обещания.

Здесь я использую модуль multer для Node.JS, который помог мне обрабатывать файлы, которые я получил от пользовательского интерфейса

app.post('/uploadMultipleFiles',upload.array('file', 10),function(req,res){
        var promises=[];
        for(var i=0;i<req.files.length;i++){
            var file = req.files[i];
            promises.push(uploadLoadToS3(file));
        }
        Promise.all(promises).then(function(data){
            res.send('Uploadedd');
        }).catch(function(err){
            res.send(err.stack);
        }) 
    })

    function uploadLoadToS3(ObjFile){

        var params={
            ACL :'public-read',
            Body : new Buffer(ObjFile.buffer),
            Bucket:'ascendon1',
            ContentType:ObjFile.mimetype,
            Key:ObjFile.originalname
        }
        return s3.upload(params).promise();
    }
0 голосов
/ 29 апреля 2018

S3 - это хорошо масштабируемое и распределенное хранилище.

Если у вас есть эти изображения локально на вашем компьютере, вы можете просто использовать

aws s3 sync local_folder s3: // имя_хранилища /

https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

cli заботится о синхронизации данных.

Вы также можете настроить желаемое количество параллелизмов при помощи настроек конфигурации.

https://docs.aws.amazon.com/cli/latest/topic/s3-config.html

Вы также можете сделать это программно, если это будет непрерывное перемещение данных.

EDIT1:

Одновременно из интерфейса можно загрузить только один файл.

Вы можете упорядочить их с помощью javascript и загружать по одному за раз.

Если вы хотите взять его на сервер, вы можете сделать это,

https://w3lessons.info/2013/09/06/jquery-multiple-file-upload-to-amazon-s3-using-php/

Надеюсь, это поможет.

...