Преобразование BLOB-объектов в PDF и сохранение в S3 с помощью AWS SDK - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь преобразовать файл документа в PDF и загрузить в S3 с помощью моего браузера.

API, который я использую для преобразования файла, возвращает blob.Как я могу преобразовать blob в PDF файл и сохранить его в S3?

В настоящее время мой код выглядит следующим образом

function addFile(file) {
    console.log("File!", file);

    var fileName = Date.now().toString();
    var albumPhotosKey = encodeURIComponent("files") + '/';

    var photoKey = albumPhotosKey + fileName;
    s3.upload({
        Key: photoKey,
        Body: file + ".pdf",
        ACL: 'public-read'
    }, function(err, data) {
        if (err) {
            console.log(err);
            return alert('There was an error uploading your photo: ', err.message);
        }
        alert('Successfully uploaded photo.');
    });
}

Я попытался преобразовать BLOB-объект вфайл, используя этот

var file = new File([blobData], "filename.pdf", {type: "application/pdf", lastModified: Date.now()});

, а затем передал файл в функцию addFile(), но он создает файл, содержащий [object File].pdf в качестве содержимого.

Как создать файл PDFс содержимым BLOB-объекта?

1 Ответ

0 голосов
/ 11 июня 2019

Для преобразования строки base64 в PDF на лету и записи на s3 в виде файла, я использовал этот подход -

    const AWS = require('aws-sdk');
    const S3 = new AWS.S3();
    const base64String = 'abcxyz';
    let buffer = new Buffer.from(base64String, 'base64');
    let params = {
        Bucket : 'your-bucket-name',
        Key : 'user.pdf', 
        Body : buffer
    }
    S3.upload(params, (err, data) => {
        if (err) {
            console.log(err)
        } else
            console.log(data.Location)
    })

Ну, другой подход - сначала создать pdf из этой строки на вашем локальном компьютере.используя модуль 'fs'.И чтобы отправить его на S3, сначала прочтите этот pdf, а затем загрузите на s3.Но это ленивый процесс, и я лично не рекомендую его.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...