首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在浏览器中使用“文件类型”包的不同错误(角)

在浏览器中使用“文件类型”包的不同错误(角)
EN

Stack Overflow用户
提问于 2020-05-12 12:30:33
回答 1查看 813关注 0票数 2

我有一个角度应用程序和组件,我上传文件。现在,我想使用文件类型库检查真正文件的类型。它有大量的下载和几乎没有问题,但我无法使它工作。所以,很可能,我错过了一些基本但很关键的东西。

我以检查BLOB文件的基本示例为例:

代码语言:javascript
复制
const FileType = require('file-type/browser');
 
(async () => {
    const blob = new Blob(['<?xml version="1.0" encoding="ISO-8859-1" ?>'], {
        type: 'plain/text',
        endings: 'native'
    });
 
    console.log(await FileType.fromBlob(blob));
    //=> {ext: 'txt', mime: 'plain/text'}
})();

但它给了我一个错误:

C:/project/node_modules/readable-web-to-node-stream/lib/index.js中的误差 模块未找到:错误:无法解析C:/project/node_modules/readable-web-to-node-stream/lib/中的“流”

我添加了一个stream包(可能不是一个好的解决方案),错误被更改为:

未定义的TypeError:未定义的类扩展值不是构造函数或空

在那之后,我认为这可能是我目前的项目太复杂,我可以尝试在一个新的小项目,所以我创建了一个。安装了file-type,并从它们的页面中获得了相同的示例(我只将const FileType = require('file-type/browser');更改为import {fromBlob} from 'file-type/browser');

但是这里出现了另一个错误:

未定义ReferenceError:全局未定义

我将(window as any)['global'] = window;添加到polyfill.js

未定义的ReferenceError:缓冲区未定义

我将buffer包和global.Buffer = global.Buffer || require('buffer').Buffer;添加到polyfill.js

未定义的ReferenceError:进程未定义

在这里我放弃了。我肯定不明白,我需要一些帮助。我错过了什么?

想要添加一个stackblitz示例,但它给了我另一个错误:

导入错误,找不到文件:./

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-20 09:48:56

最后,我完全放弃了使用.fromBlob.fromStream方法和file-type/browser部件。什么起作用:

polyfills.ts

代码语言:javascript
复制
/*
 * APPLICATION IMPORTS
 */
(window as any).global = window;
// @ts-ignore
// tslint:disable no-var-requires
window.Buffer = window.Buffer || require('buffer').Buffer;

component.ts

代码语言:javascript
复制
import { fromBuffer, FileTypeResult } from 'file-type/core';

async getTrueFileType(file: File): Promise<FileTypeResult | undefined> {
  return file.arrayBuffer().then(buffer => fromBuffer(buffer));
}

async validateFile(file) {
  const ext = await this.getTrueFileType(file);
  console.log(ext); // {ext: 'png', mime: 'image/png'}
}

有关更多详细信息,请阅读问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61751782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档