小編給大家分享一下Node如何上傳文件,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了泰來(lái)免費(fèi)建站歡迎大家使用!
首先,我們可以給出一個(gè)最初的方案,然后在代碼中不斷進(jìn)行完善。我給出的方案一是這樣一個(gè)簡(jiǎn)單邏輯:
那接下來(lái)首先我們先來(lái)完成第一步:檢驗(yàn)圖片參數(shù)
我這里寫了一個(gè)方法用來(lái)檢驗(yàn)圖片參數(shù)是否完整,參數(shù)要求為一張啟動(dòng)圖加上四個(gè)商品屬性值,如果參數(shù)出現(xiàn)不存在的情況,則直接給客戶端返回error.
接下來(lái)第二步是實(shí)現(xiàn)圖片上傳的邏輯,所以我定義了一個(gè)通用的上傳文件方法:
uploadPicsAndCheckPar(req, checkParFunc, maxPic, pathDir, isNeedUid, cb)
我們先來(lái)看看參數(shù)如何理解:
req: 來(lái)源于表單請(qǐng)求checkParFunc: 檢測(cè)上傳文件參數(shù)的方法maxPic: 圖片最大上傳張數(shù)限制pathDir: 服務(wù)器保存上傳文件文件夾名稱isNeedUid: 為每張圖片分配一個(gè)uidcb: 回調(diào)到路由層
首先在config.js中配置上傳文件主目錄:
CONFIG.PICSMAINPATH = '/mnt/test';
接下來(lái)生成multiparty對(duì)象,并配置上傳目標(biāo)路徑:
var form = new multiparty.Form({uploadDir: (mainPath + '/picTemp/')});
然后執(zhí)行圖片上傳操作:
form.parse(req,function (error,fields,files)
到這里上傳圖片就結(jié)束了么?當(dāng)然沒(méi)有!別忘了剛才我們說(shuō)過(guò)的對(duì)圖片數(shù)量,大小等做限制。首先我們先解析參數(shù)格式:
檢測(cè)上傳圖片數(shù)量是否大于我們?cè)O(shè)置的maxPic,如果超過(guò)數(shù)量,則刪除上傳的圖片返回error。檢測(cè)圖片大小是否超過(guò)4M,如果超過(guò)4M則刪除圖片返回error。
我們可以看下刪除圖片的邏輯,其實(shí)就是循環(huán)表單刪除圖片:
接下來(lái)我們還得判斷每張圖片的名稱是否只有一個(gè),一張圖片如果出現(xiàn)兩個(gè)名稱則刪除圖片返回error:
當(dāng)然了,我們上傳文件既然準(zhǔn)備封裝成公共方法,當(dāng)然得適配非圖片文件的情況,我這里針對(duì)視頻進(jìn)行了處理:
如果視頻大小符合要求,檢驗(yàn)參數(shù)是否符合接口要求,符合接口要求則重命名視頻名稱。那我們來(lái)看看重命名方法如何實(shí)現(xiàn):
首先,我們需要構(gòu)造路徑,我這里以當(dāng)前年月日結(jié)合uid為路徑,遍歷檢查路徑是否存在,不存在則創(chuàng)建文件夾
最后更新圖片路徑為真實(shí)路徑
到這里驗(yàn)證圖片參數(shù)全部通過(guò),上傳圖片成功。給路由層返回參數(shù)列表。在路由層進(jìn)行數(shù)據(jù)庫(kù)層邏輯處理。
到這里一個(gè)完整的上傳功能我們就實(shí)現(xiàn)完成,接下來(lái)我們來(lái)測(cè)試下上傳接口是否可以正常運(yùn)轉(zhuǎn)
可以看到參數(shù)如果不完整,直接給客戶端返回對(duì)應(yīng)的錯(cuò)誤信息。
如果按照剛才我們?cè)O(shè)定的接口要求傳參,就可以看到我們圖片上傳成功。接下來(lái)我們可以看下我們定義的上傳文件夾是否有圖片成功上傳。
可以看到圖片成功上傳,路徑就是以當(dāng)前年月日作為文件夾。我們可以快速的查看我們所上傳的圖片。當(dāng)然,如果需要上傳的資源很多,把所有資源都上傳到服務(wù)器會(huì)給服務(wù)器帶來(lái)一定的負(fù)荷,所以其實(shí)我們可以采用將圖片直接上傳到COS中。COS使用其實(shí)很便捷,官方有SDK可以直接引入進(jìn)行使用,這些本篇就不涉及了。
以上是“Node如何上傳文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章標(biāo)題:Node如何上傳文件
分享地址:http://muchs.cn/article34/piojpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、微信小程序、靜態(tài)網(wǎng)站、微信公眾號(hào)、標(biāo)簽優(yōu)化、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)