0

我正在尝试实现一个 HTML5 Amazon S3 上传器(通过使用 REST API),并偶然发现了以下问题:当尝试上传一个小的文本文件时,一切都像一个魅力。尝试上传二进制文件时,文件在 S3 上变大,并且显然已损坏。这就是我正在做的事情:

// multipart upload init / finish code hidden; if you need it, I'll add it
// file is read by using a file input
var blob = file.slice(start, end);
var reader = new FileReader();
reader.readAsBinaryString(blob);

// in reader.onloadend:
var path = "/" + settings.key;

path += "?partNumber=" + chunk + "&uploadId=" + u.upload_id;
var method = "PUT";
var authorization = "AWS " + settings.access_key + ":" + signature;

var xhr = new XMLHttpRequest();
xhr.open(method, settings.host + path, true);
xhr.setRequestHeader("x-amz-date", date);
xhr.setRequestHeader("Authorization", authorization);

// application/octet-stream used
xhr.setRequestHeader("Content-Type", settings.content_type); 
xhr.send(e.target.result);

另外,我尝试创建一个包含文本的 10mb 文件(1000 万行 0123456789)并且该文件可以正常工作。

如果有人对此问题有解决方案或偶然发现它,请告诉我。

4

1 回答 1

3

似乎 StackOverflow 也适合自己解决问题——我在完成想法时已经修复了它。该xhr.send()方法似乎可以直接接收file.slice()blob,因此不需要FileReader.

我希望这可以帮助其他偶然发现这个问题的人。

于 2012-09-15T14:43:07.143 回答