Javascript 使用AWS SDK将blob转换为PDF并保存到S3

Javascript 使用AWS SDK将blob转换为PDF并保存到S3,javascript,amazon-web-services,amazon-s3,Javascript,Amazon Web Services,Amazon S3,我正在尝试使用浏览器将文档文件转换为PDF并上载到S3 我用来转换文件的API返回一个blob。如何将blob转换为PDF文件并保存到S3 目前我的代码如下所示 function addFile(file) { console.log("File!", file); var fileName = Date.now().toString(); var albumPhotosKey = encodeURIComponent("files") + '/'; var

我正在尝试使用浏览器将文档文件转换为
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作为内容的文件


如何创建包含blob内容的PDF文件?

要动态地将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)
    })
另一种方法是首先在本地机器上使用“fs”模块从这个字符串创建pdf。 要将其提交到S3,请先阅读该pdf,然后上传到S3。但这是一个懒惰的过程,我个人不推荐这样做


希望能有所帮助。

要动态地将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)
    })
另一种方法是首先在本地机器上使用“fs”模块从这个字符串创建pdf。 要将其提交到S3,请先阅读该pdf,然后上传到S3。但这是一个懒惰的过程,我个人不推荐这样做


希望能有所帮助。

对于大多数原生js API来说,blob和文件往往是可互换的。不需要转换。而且blob可能已经是pdf格式了,无需转换。也应该是缓冲区、类型化数组、Blob、字符串、ReadableStream中的任意一个。它不应该是文件名。您已经开始使用PDF文件了吗?如果没有,那么您必须使用库生成PDF。它不像转换一个BLOB那么简单。@TimBiegeleisen@PatrickEvans我使用的是
Cloudmersive API
,它给了我一个BLOB,当我
console.log
时,它的响应是显示一些PDF编码的东西,但当我把它传递到S3时,我得到一个空文件it@PatrickEvans当我给缓冲区时,我得到的是一个空的pdf文件存储在S3上意味着当您只有
Body:blobVariable,
时,blob和文件对于大多数原生JSAPI来说都是可互换的。不需要转换。而且blob可能已经是pdf格式了,无需转换。也应该是缓冲区、类型化数组、Blob、字符串、ReadableStream中的任意一个。它不应该是文件名。您已经开始使用PDF文件了吗?如果没有,那么您必须使用库生成PDF。它不像转换一个BLOB那么简单。@TimBiegeleisen@PatrickEvans我使用的是
Cloudmersive API
,它给了我一个BLOB,当我
console.log
时,它的响应是显示一些PDF编码的东西,但当我把它传递到S3时,我得到一个空文件it@PatrickEvans当我给缓冲区时,我得到的是一个空的pdf文件存储在S3上,您的意思是当您只有
Body:blobVariable,
时?