概述
首先要聲明一點(diǎn),本文講的是使用node上傳文件到遠(yuǎn)程服務(wù)器的,比如說我們可以使用node上傳圖片到CDN。如果小伙伴想看的是node服務(wù)如何接收客戶端上傳的文件,那么你不用往下看了。
技術(shù)方案
在前端項(xiàng)目中,我們常用的辦法是使用 input 元素選擇文件,然后構(gòu)建 js FormData類的實(shí)例,并調(diào)用append方法將文件添加到FormData實(shí)例中,然后使用ajax庫發(fā)起ajax請(qǐng)求上傳文件即可。
那么在node里面有什么不一樣呢?
1、node并不是原生支持FormData類,我們需要安裝一個(gè)叫form-data的包,然后構(gòu)造FormData實(shí)例
2、由于沒有 input 元素給我們使用,我們需要通過fs.createReadStream(filePath)獲取本地文件實(shí)例,然后調(diào)用FormData實(shí)例的append方法將文件實(shí)例添加到FormData實(shí)例中
3、設(shè)置Content-Type請(qǐng)求頭:?`multipart/form-data; boundary=${formData.getBoundary()}`;? ?formData是構(gòu)建的FormData實(shí)例。注意:千萬要加上boundary=${formData.getBoundary()},不然服務(wù)端有可能拿不到formdata數(shù)據(jù)?。。?!
完成以上工作就可以使用ajax庫上傳文件到服務(wù)端了!