概述
首先要聲明一點(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庫(kù)發(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ù)!>谅獭A泊伞!
完成以上工作就可以使用ajax庫(kù)上傳文件到服務(wù)端了斑匪!