使用S3的预签名网址上传失败,并出现解析错误

时间:2018-08-08 10:55:16

标签: amazon-s3 upload pre-signed-url

我正在尝试使用预先签名的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编码的字符串进行显示,如图所示。这是有问题的上传部分。

0 个答案:

没有答案