在JavaScript中将Blob转换为文件列表

mad*_*n V 3 javascript blob filelist

我正在使用以下代码将画布图像隐藏到Blob。
为了将Blob转换为文件/文件列表对象,我需要将该文件列表传递给文件处理程序。

我的代码:

var canvas1 = document.getElementById("preview");
var theImage = document.getElementById("blahProfile");
theImage.src = canvas1.toDataURL();
var blob = dataURItoBlob(theImage.src);
Run Code Online (Sandbox Code Playgroud)

有什么办法可以将该Blob转换为文件对象?

aps*_*ers 5

FileBlob与相比,对象包含的信息更多lastModifiedDate,并且具有和等属性fileName。您的图像数据具有这些属性中的任何一个都没有意义,因为它不是文件。

我假设您为FileList处理程序用户a FileReader读取File对象。但是,这些FileReader方法也可以处理Blob对象(因为File是的子类Blob)。因此,您可以:

  • 在处理每个项目以及处理图像数据时,将FileReader代码提取到一个单独的函数中,该函数接受一个BlobFile(可能还有一个分辨率回调函数)amd调用该函数FileListBlob

  • 如果您的FileList处理程序仅按索引访问列表项(例如myFileList[i]),则可以FileList使用Blobs 数组伪造一个。例如,此函数可用于s 的实数FileList或数组Blob

    function processFileList(list) {
        var reader = new FileReader();
        reader.readAsText(list[0]);
        reader.addEventListener("loadend", function() {
            console.log(reader.result);
        });
    }
    
    Run Code Online (Sandbox Code Playgroud)