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,
时?