Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有FileReader的情况下将文件转换为Javascript中的Blob?_Javascript_Typescript_Ecmascript 6 - Fatal编程技术网

如何在没有FileReader的情况下将文件转换为Javascript中的Blob?

如何在没有FileReader的情况下将文件转换为Javascript中的Blob?,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,我正在尝试在不使用FileReader的情况下将文件转换为Blob。我不能使用FileReader,因为我必须使用的最新版本的Typescript不接受文件作为FileReader.readAsArrayBuffer的参数 使用FileReader,我可以按如下方式执行: var reader = new FileReader(); reader.onloadend = function(e) { new Blob([ this.result ], { type: "image/jpeg"

我正在尝试在不使用FileReader的情况下将文件转换为Blob。我不能使用FileReader,因为我必须使用的最新版本的Typescript不接受文件作为FileReader.readAsArrayBuffer的参数

使用FileReader,我可以按如下方式执行:

var reader = new FileReader();

reader.onloadend = function(e) {
  new Blob([ this.result ], { type: "image/jpeg" } );
};

reader.readAsArrayBuffer(file);

如果没有FileReader,如何实现相同的结果?

您可以使用接受文件的重载来扩充lib.d.ts中的声明

例如,使用以下内容创建名为globals.d.ts的文件

interface FileReader {
    readAsArrayBuffer(file: File): void;
}
也就是说,如果声明被更改,我会对这种行为保持警惕,因为某些环境可能不支持它。

如果我没记错的话,File是Blob的一个子类,所以您甚至不需要使用FileReader,它已经是Blob了。如果Typescript有问题,您可以随时转换为any-though。