Я пытаюсь загрузить изображение локального 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, потому чтодругих устаревших приложений.