【问题标题】:How do I extract the Blob and the ArrayBuffer / TypedArray from the Formidable parsed object? In Node.js如何从强大的解析对象中提取 Blob 和 ArrayBuffer / TypedArray?在 Node.js 中
【发布时间】:2022-10-03 06:51:07
【问题描述】:

长话短说,我使用了一个 DataForm 对象,其中包含一个图像的 blob 作为部分之一,并将其​​发送到我的 node.js 服务器到强大的解析器中:

    //blob enters the files variable
    formParser.parse(req, (err, fields, files)=>{
        if(err)throw err; 


        const fileInfo = JSON.parse(fields.JSON);

        //figure out how to read the blob, how to get it\'s array buffer, then write to C disk
        console.log(files);

        //fs.writeFile() here




    })

如何从这个持久文件中提取 Blobs ArrayBuffer,看起来像这样:

{
  Binary: PersistentFile {
    _events: [Object: null prototype] { error: [Function (anonymous)] },
    _eventsCount: 1,
    _maxListeners: undefined,
    lastModifiedDate: 2022-06-15T17:44:50.214Z,
    filepath: \'C:\\\\Users\\\\rnata\\\\AppData\\\\Local\\\\Temp\\\\f962bfe8ab505addfba1e4600\',
    newFilename: \'f962bfe8ab505addfba1e4600\',
    originalFilename: \'blob\',
    mimetype: \'image/png, image/jpg, image/jpeg\',
    hashAlgorithm: false,
    size: 373021,
    _writeStream: WriteStream {
      _writableState: [WritableState],
      _events: [Object: null prototype],
      _eventsCount: 1,
      _maxListeners: undefined,
      path: \'C:\\\\Users\\\\rnata\\\\AppData\\\\Local\\\\Temp\\\\f962bfe8ab505addfba1e4600\',
      fd: 4,
      flags: \'w\',
      mode: 438,
      start: undefined,
      autoClose: true,
      pos: undefined,
      bytesWritten: 373021,
      closed: false,
      [Symbol(kFs)]: [Object],
      [Symbol(kCapture)]: false,
      [Symbol(kIsPerformingIO)]: false
    },
    hash: null,
    [Symbol(kCapture)]: false
  }
}

我需要什么类,或者我必须使用什么方法,以便我可以提取一个数组缓冲区并在 fs.writeFile() 中使用它。

谢谢!

  • 我也想知道答案
  • 这就是答案。如果您不指定目录,Formidable 已经默认自动将二进制文件写入 C:Drive。所以你必须通过文件名属性找到文件,然后使用 fs.rename 对其进行重命名,然后由于它已经是一个二进制文件,你只需在它上面使用 fs.readfile() 来读取它二进制数据。总而言之,强大的自动将文件作为二进制文件保存到 C: 驱动器,然后使用 fs.readFile() 获取它的二进制数据。

标签: javascript node.js request blob formidable


【解决方案1】:

我遇到了同样的问题。就我而言,我能够以这种方式修复它:

  1. 获取文件路径在那个 PersistentFile 对象中。
  2. import * as fs from "fs";
  3. const srcToFile = (src: string) => fs.readFileSync(src);

    srcToFile 函数将返回给你一个缓冲区/对象。

    我很难将我的表单数据文件上传到 AWS S3。在解析多格式数据并将文件转换为缓冲区后,我就可以上传它了。我希望它也适合你。

【讨论】:

    猜你喜欢
    • 2014-02-28
    • 2020-08-02
    • 2016-11-16
    • 1970-01-01
    • 2013-07-17
    • 2022-01-12
    • 2013-02-26
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多