XMLHttpRequest内容长度不等于文件的实际大小

XMLHttpRequest content-length is not equal to the file actual size

本文关键字:文件 不等于 XMLHttpRequest      更新时间:2023-09-26

我正在尝试使用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);

当我查看标题请求的内容长度时,我发现长度大于实际大小,有些数字大约是7500,

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

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

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

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