【问题标题】:get file type after downloading from IPFS从 IPFS 下载后获取文件类型
【发布时间】:2022-06-11 09:10:04
【问题描述】:

我正在使用 ipfs 下载文件...但 ipfs 没有文件名或扩展名。

如何根据下载的数据正确设置保存文件的扩展名?

【问题讨论】:

    标签: filenames fs file-extension ipfs


    【解决方案1】:

    没有办法最终获得 IPFS 中的文件扩展名,因此,您可以查看文件的内容来推断其文件类型(例如使用 file-type

    当您在缓冲区中拥有文件的全部内容时,您可以这样做:

    import {fileTypeFromBuffer} from 'file-type';
    
    let buffer = /* buffer of file from IPFS */;
    
    // undefined or string of file extension
    let ext = (await fileTypeFromBuffer(buffer))?.ext;
    

    【讨论】:

      【解决方案2】:

      如果您不想在前端的 React 应用程序中执行此操作,则可以:

            let contentType = await fetch(imageUrl)
              .then(response => {
                return response.blob().then(blob => {
                  return {
                    contentType: response.headers.get("Content-Type"),
                    raw: blob
                  }
                })
              })
              .then(data => {
                return data.contentType
              })
      

      file-type 旨在用于Node 应用程序,而不是客户端。

      如果您尝试使用为Node 设计的库,那么您将收到与库对内置Node 模块的内部依赖相关的错误,这些模块在浏览器中不可用。您应该使用不同的库从浏览器发出 HTTP 请求;我建议使用浏览器内置的fetch

      【讨论】:

        猜你喜欢
        • 2018-12-04
        • 1970-01-01
        • 2019-03-28
        • 2019-03-18
        • 2015-02-20
        • 2018-10-20
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        相关资源
        最近更新 更多