我正在使用Angular V6和aws-sdk软件包通过Prime NG文件上传库将文件上传到AWS S3存储桶中。
我正在尝试使用以下代码上传PDF文件,文件正在S3存储桶中上传,但是当我打开同一文件时,它显示内容已损坏的错误
我尝试了多种方法,但是没有任何运气。
下面是我的代码:
const files = event.files
const fileReader = new FileReader();
if (files && files.length) {
const fileToRead = files[0];
if (fileToRead) {
fileReader.onload = function (fileLoadedEvent) {
const textFromFileLoaded = fileLoadedEvent.target['result'];
if (textFromFileLoaded) {
var bucket = new AWS.S3({ params: { 'Bucket': 'pulse-elasticsearch' } });
let content = textFromFileLoaded
const params = {
Bucket: "pulse-elasticsearch" + "/temp",
Key: fileToRead.name,
Body: content,
// contentType : 'application/pdf'
};
bucket.upload(params, function (err, data) {
// handle the rest part
})
}
}
fileReader.readAsText(fileToRead, "UTF-8");
}
}
我想使用相同的文件上传库上传任何类型的文件。
答案 0 :(得分:0)
我找到了解决方法:
问题是-我正在使用fileReader
方法将文件的内容直接传递到S3存储桶的主体。
解决方法是-将files[0]
直接传递到s3存储桶的主体,而无需读取文件并获取内容。
这是简单的代码:
uploadFile(event, type) {
const file = event.files[0]
if (file) {
var bucket = new AWS.S3({ params: { 'Bucket': 'bucket-name' } });
const params = {
Bucket: "bucket_name/path",
Key: filename.ext,
Body: file ,
};
bucket.upload(params, function (err, data) {
handle the rest part
})
}
}
参考link了解流程。