如何使用Node.JS内置的fetch(不是node_fetch)上传带有FormData的文件?
fetch
node_fetch
dbf7pr2w1#
使用NodeJS内置fetch上传FormData文件。我们将文件读取为Blob,然后将set或append读取到FormData对象。最后,我们将FormData对象作为fetch请求的主体发送。要将文件读取为Blob,我们可以使用fs.openAsBlob(Node.JS ^19.8),或者将文件fs.readFile读取为Buffer,然后将其转换为Blob。
FormData
Blob
set
append
fs.openAsBlob
fs.readFile
Buffer
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, /* ... */ }); }
1条答案
按热度按时间dbf7pr2w1#
使用NodeJS内置
fetch
上传FormData
文件。我们将文件读取为Blob
,然后将set
或append
读取到FormData
对象。最后,我们将FormData
对象作为fetch
请求的主体发送。要将文件读取为
Blob
,我们可以使用fs.openAsBlob
(Node.JS ^19.8),或者将文件fs.readFile
读取为Buffer
,然后将其转换为Blob
。