FormData
将文件上传为 fetch
。
我们将文件读取为 Blob
然后 set
或 append
到 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, /* ... */ });
}