Javascript 如何获取BLOB url引用并使用filereader API正确读取它?

Javascript 如何获取BLOB url引用并使用filereader API正确读取它?,javascript,html,blob,filereader,Javascript,Html,Blob,Filereader,我的应用程序对使用createObjectURL创建的本地图像文件使用许多blob引用 我需要将这些blobURL引用转换为一个javascript文件对象,以便上传它们 为了检索blob,我使用jquery的Ajax函数,如下所示: var bloburl = 'blob:3c9230a9-55ea-4357-a2d3-db97673a1947'; $.ajax({ url : bloburl, //Blob URL reference

我的应用程序对使用
createObjectURL
创建的本地图像文件使用许多blob引用

我需要将这些blobURL引用转换为一个javascript
文件
对象,以便上传它们

为了检索blob,我使用jquery的Ajax函数,如下所示:

var bloburl = 'blob:3c9230a9-55ea-4357-a2d3-db97673a1947';

     $.ajax({
                url : bloburl,  //Blob URL reference
                type : 'GET',
                processData : false,
                contentType : false,
                success: function(file) {

                    //Here I am attempting to build an object that can be read by the FileReader API
                    var blob = new Blob([file], { type: 'image/jpeg' });                  
                    self.cache.filestoupload.push(blob);
                }
            });
填充
self.cache.filestoupload
数组后,应用程序开始攻击数组中的第一个文件,将前几个字节切分,然后通过fileReader API将其作为二进制字符串读取。然后将文件的这一部分传递给webworker,并读取图像exif数据。最后,它开始上传完整的文件

var binaryReader = new FileReader();

    binaryReader.onload = function (e) {
        worker.postMessage({
            guid: fileindex,
            binary_string: binaryReader.result
        });

    };
    binaryReader.readAsBinaryString(filePart);
一切都可以完美地处理从HTML
元素以标准方式检索的文件

但是,当通过BLOBURL引用、通过ajax请求检索、然后切片并传递到fileReader API中的同一个文件失败。没有返回exif数据,尽管文件上传到服务器,但处理上传的同一个PHP脚本也会失败

看来我没有正确检索文件。我哪里做错了

总而言之,我需要能够检索用
createObjectURL
引用的文件,并将它们以与标准javascript
file
对象相同的格式传递到fileReader中

更新:

好的,我使用标准的xhr请求使其工作如下:

 var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.responseType = 'blob';
        xhr.onreadystatechange = function(e) {
            if (xhr.readyState == 4) {
                var myBlob = this.response;
                self.cache.filestoupload.push(myBlob);              
            }
        };
        xhr.send();

如何使用jQuery的$.Ajax方法实现同样的功能?

目前在jQuery 1.x或2.x中无法实现这一点。见: