node.js - NodeJS 上传文件
问题描述
我正在尝试实现文件上传功能。我已经观看并阅读了许多教程,但它们都需要一个或另一个库,例如、multer
或其他东西。据我所知,它可以在没有任何外部库的情况下完成,所以这就是我想要的 - 几乎没有额外的库。formidable
axios
在前端,我将文件打包FormData
并通过以下方式发送fetch
:
if (file) {
const fd = new FormData()
fd.append('file', file)
const res = await fetch('/api/files', {
method: 'POST',
body: fd
})
}
在后端,请求正文如下所示:
-----------------------------26088851433443883591868954602
Content-Disposition: form-data; name="file"; filename="1.png"
Content-Type: image/png
�PNG
→
IHDR�♦☻g�V¶☺sRGB��∟�♦gAMA��♂�a♣ pHYs♫�♫�☺�o�d{�IDATx^��⌂��W}▼����č↔;��6�4�6m��Lg�5�;q�&D�ۦ�8Nm�4����n�
-----------------------------312671409112038349881281368983--
到目前为止我尝试过:
file
不打包就发送FormData
不会改变任何东西fs.writeFile()
给出一个大小合适的文件,但它不是有效文件fs.writeFile()
withbase64
选项给出一个文件,里面只有一行req.files.mv()
在教程中工作时axios
无法阅读files
并且失败req.body.mv()
也失败了mv is not a function
我该怎么做才能让它工作?如果它有帮助,我的项目是用 NextJS 编写的。