3

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

我的代码:

var canvas1 = document.getElementById("preview");
var theImage = document.getElementById("blahProfile");
theImage.src = canvas1.toDataURL();
var blob = dataURItoBlob(theImage.src);

有没有办法将该 blob 转换为文件对象?

4

1 回答 1

5

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

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

  • 将您的代码提取FileReader到一个单独的函数中,该函数接受一个BlobFile(可能还有一个解析回调函数)并在处理您的每个FileList项目和处理您Blob的图像数据时调用该函数

  • 如果您的FileList处理程序仅通过索引(例如,)访问列表项,那么您可以简单地通过使用 s 数组myFileList[i]来伪造 a 。例如,此函数适用于实数或 s 数组:FileListBlobFileListBlob

    function processFileList(list) {
        var reader = new FileReader();
        reader.readAsText(list[0]);
        reader.addEventListener("loadend", function() {
            console.log(reader.result);
        });
    }
    
于 2014-05-29T06:53:34.947 回答