XMLHttpRequest content-length不等于文件实际大小

时间:2015-02-05 09:40:42

标签: javascript ajax json file-upload xmlhttprequest

我正在尝试使用XMLHttpRequest将文件(图像)上传到我的服务器端,好吧,我在发送之前检查文件大小并检查我的请求标题上的内容长度,它们不一样,这里是代码:

var file = 'someFile'; 
var readers = new FileReader();
readers.readAsBinaryString(file);
readers.onload = (function(theFile) {
  return function(e) {                     
       var myData =  e.target.result;
       console.log(myData.length); // this output is 5548
       var xhr = new XMLHttpRequest();
       xhr.open("POST", url, true);
       xhr.setRequestHeader('Content-Type', 'application/octet-stream;');
       // send the collected data as JSON
       xhr.send(myData );
       xhr.onloadend = function () {
          // done               
       };
  })(file);

当我在我的标题请求中查看内容长度时,我发现长度大于actaul大小,有些数字如~7500,

我如何确保请求文件数据与文件的实际大小相同?

1 个答案:

答案 0 :(得分:1)

当您发送文件内容时,它通常以base64编码的字符串形式发送。这个请求的大小增加了大约30%。因此

console.log(myData.length); // this output is 5548

文件的大小不是它的长度。您可以使用File.name