我正在尝试使用预先签名的URL将图像上传到S3。但是,我收到此错误消息:
XML Parsing Error: no root element found
Location: https://s3.amazonaws.com/noteimages/jxxcarlson/carr_fire_1.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJQYJYCIAWH6DGHIQ%2F20180808%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20180808T104428Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6a4e61a622b779370d037de03a2473582d31e33b3c6ad4316015bd8769452611
Line Number 1, Column 1:
当我检查S3时,我看到文件已上传,并且其内容为非空。但是,当我下载该文件时,无法打开它。而且,我看到了
原始文件有132,454字节; 下载的文件具有197,341字节。 ((到底是什么?!))文件以某种方式没有以正确的格式上传。
以下是用于上传的代码:
app.ports.uploadImage.subscribe(function (info) {
var reader = new FileReader();
reader.readAsBinaryString(info.fileValue);
reader.onload = function(e) {
$.ajax({
url: info.url, // the presigned URL
headers: {
'Access-Control-Allow-Origin': '*'
},
type: 'PUT',
data: reader.result,
success: function() { console.log('Uploaded data successfully.'); }
});
}
});
ports
业务是因为这是Elm应用程序的Javascript方面。
以下是指向我正在处理的应用程序中的图像加载器页面的网址:
http://noteimages.s3.amazonaws.com/jxxcarlson/knode_image_uploader.png
FileReader和端口已成功用于从JS-land发送图像数据作为base64编码的字符串进行显示,如图所示。这是有问题的上传部分。