【问题标题】:Convert response from nodjs fs to web file api将来自节点 js fs 的响应转换为 web 文件 api
【发布时间】:2021-04-12 13:39:13
【问题描述】:

得到一个在浏览器中读取和解析文件的包

<input multiple accept=".abc" name="file" id="txtFileUpload" type="file" onchange="upload(event)"/>

function upload(event) {
    var file = event.target.files[0];
    somepackage.read(file, function(error, data) {...}

我需要在nodejs中使用同一个包

fs.readFile("somefile.abc", 'utf8' , (err, file) => {
    somepackage.read(file, function (error, data) {
   // gives error

来自 web 浏览器 api 的响应和来自 node js fs 的响应不一样。是否可以将来自节点的 fs 的响应转换为与浏览器中的响应相同?

【问题讨论】:

    标签: node.js fileapi


    【解决方案1】:

    在浏览器中,file 变量将是 File 的实例,如 MDN 页面中所述:https://developer.mozilla.org/en-US/docs/Web/API/File

    意味着它是一个完整的对象,具有namelastModified...等属性。

    同时,在 Node.js 中,fs.readFile 使用 utf8 编码返回的值将是文件内容作为字符串。

    所以它们确实不兼容。根据somepackage.readFile 对象所做的操作,您可以通过单独的fs.stat 调用检索日期信息来模拟一个虚拟对象。

    幸运的是,像 https://github.com/node-file-api/file-api 这样的项目已经处理好了。

    请注意,如果 somepackage.read 假定提供的文件是 Blob,则您需要使用 Node.js 15.x 中最近引入的功能来增强上述软件包:https://github.com/nodejs/node/pull/36811

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 2018-11-07
      • 2019-07-25
      • 2016-03-23
      • 1970-01-01
      • 2016-04-16
      • 2018-10-13
      相关资源
      最近更新 更多