Как загрузить файл изображения в Amazon S3, используя aws-sdk и Nativescript - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь загрузить изображение локального PNG-файла в Amazon S3 с помощью aws-sdk, но файл, поступающий в Bucket, в два раза больше байт и поврежден.
Я могу перечислять файлы, создавать Buckets среди других.


Nativescript: 5.2.4
npm: 6.4.1
узел: 10.15.3

Я пробовал читать, используя метод file.readText ()

 await file.readText().then(
    (content) => {
        this.binarySource = content;
    });

Init Amazon S3

        AWS.config.update({
            region: "us-east-1",
            credentials: {
                accessKeyId: this.chaveAmazonS3,
                secretAccessKey: this.tokenAmazonS3
            }
        });
        const s3 = new AWS.S3({
            apiVersion: "2006-03-01"
        });
        this.amazonS3 = s3;

Получить файл и загрузить, используя putObject

        let artefato = '/data/user/0/org.nativescript.aixlab/files/midias/41_000014_1558633914086.png';
        let diretorioS3 = 'dirbucket/';

        let filename = artefato.substring(artefato.lastIndexOf(separator) + 1);
        filename = diretorioS3 + filename;

        const file: File = File.fromPath(artefato);
        this.binarySource = await file.readTextSync();
        // await file.readText().then(
        //     (content) => {
        //         this.binarySource = content;
        //     });

        console.log("filename", filename, file.size, this.binarySource.length, artefato);

        let params = {
            Bucket: this.bucketAmazonS3,
            Key: filename,
            Body: this.binarySource,
            ContentLength: this.binarySource.length,
            ContentType: 'image/png',
        };

        try {
            //let options = {partSize: 10 * 1024 * 1024, queueSize: 1};
            let response = await this.amazonS3.putObject(params, function (err, data) {
                console.log("PUT", err, data);
            }); 
        } catch (error) {
            console.error("Erro putObjectBucket", error);
            return false;
        }

Результат в консоли

JS: 
JS: PUT null {
JS:   "ETag": "\"913b7bda195f7bebfdaff5e5b10138a0\""
JS: }

Это значения File (Module) и возвращаемого файла .readTextSync


file.size = 193139
this.binarySource.length = 182599


Объект в Amazon Bucket
342,6 КБ

Я ожидаю PNG-файл в Amazon S3 Bucket в двоичном формате.

Не могу сохранить в формате base64, потому чтодругих устаревших приложений.

...