Squeak.ru - шаблоны программирования

Загрузить изображение прямо в корзину на s3 amazon issue

Я новичок на Amazon s3. Я столкнулся с проблемой загрузки изображения непосредственно из внешнего интерфейса в корзину amazon s3.

Я также просмотрел много руководств, но нет правильного объяснения загрузки изображения непосредственно в s3. Они учат нас, как загрузить изображение через локальный компьютер на s3.

Я реализовал код, но не смог определить, как я могу загрузить изображение без сохранения на свой локальный компьютер.

Вот код, который я реализовал, но мне не повезло:

s3ImageUpload: (req, res) => {
        var fs = require('fs');
        var multer = require('multer');
        var AWS = require('aws-sdk');
        var path = require('path');

        var awsCredFile = path.join(__dirname, '.', 'key.json');

        console.log('awsCredFile is');
        console.log(awsCredFile);

        AWS.config.loadFromPath(awsCredFile);

        var s3 = new AWS.S3();

        var photoBucket = new AWS.S3({params: {Bucket: 'testbucket'}});

        var sampleFile = {
            //"_id" : 345345,
            //"fieldname" : "uploads[]",
            //"originalname" : "female.JPG",
            //"encoding" : "base64",
            //"mimetype" : "image/jpeg",
            "destination" : "./public/images",
            "filename" : "female.jpeg",
            "path" : "/images/female.jpeg",
            //"size" : 251556,
            //"user" : "579fbe61adac4a8a73b6f508"
        };

        var filePathToSend = path.join(__dirname, '../public', sampleFile.path);


        function uploadToS3(filepath, destFileName, callback) {
            photoBucket
                .upload({
                    ACL: 'public-read',
                    Body: fs.createReadStream(filepath),
                    Key: destFileName.toString(),
                    ContentType: 'image/png'
                })
                // http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3/ManagedUpload.html#httpUploadProgress-event
                .on('httpUploadProgress', function(evt) { console.log(evt); })
                // http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3/ManagedUpload.html#send-property
                .send(callback);
        }

        multer({limits: {fileSize:10*1024*1024}});

        console.log('filePathToSend is ');
        console.log(filePathToSend);

        uploadToS3(filePathToSend, sampleFile.filename, function (err, data) {
            if (err) {
                console.error(err);
                return res.status(500).send('failed to upload to s3').end();
            }
            res.status(200)
                .send('File uploaded to S3: '
                    + data.Location.replace(/</g, '&lt;')
                    + '<br/><img src="' + data.Location.replace(/"/g, '&quot;') + '"/>')
                .end();
        });

        console.log('uploading now...');
    }

  • Какие ошибки возникают при использовании вашего кода? 28.06.2018

Ответы:


1

Предварительно подписанные URL-адреса могут быть хорошим решением для вас.

В своем бэкэнде вы можете подписать URL-адрес с помощью AWS SDK. Затем вам просто нужно отправить этот URL обратно клиенту. Наконец, клиент может загрузить файл, используя этот URL.

https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

28.06.2018
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...