使用内置NodeJS 'fetch'在FormData中上载文件

rqqzpn5f  于 2023-03-17  发布在  Node.js
关注(0)|答案(1)|浏览(587)

如何使用Node.JS内置的fetch(不是node_fetch)上传带有FormData的文件?

dbf7pr2w

dbf7pr2w1#

使用NodeJS内置fetch上传FormData文件。我们将文件读取为Blob,然后将setappend读取到FormData对象。最后,我们将FormData对象作为fetch请求的主体发送。
要将文件读取为Blob,我们可以使用fs.openAsBlob(Node.JS ^19.8),或者将文件fs.readFile读取为Buffer,然后将其转换为Blob

import { openAsBlob } from 'node:fs' // Node.JS ^19.8
import { readFile } from "node:fs/promises"
import { lookup } from "mime-types"

uploadFile("./path/to/file.ext").then(res => res.text()).then(console.info)

async function uploadFile(/** @type {string} */ filePath) {
  const file = await openAsBlob(filePath); // or
  const file = new Blob([await readFile(filePath)], { type: lookup(filePath) });
  const formData = new FormData()
  formData.set("file", file, "file_name.ext");
  return fetch(`https://example.com/upload`, { method:"POST", body:formData, /* ... */ });
}

相关问题