這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在nodejs中利用multer實(shí)現(xiàn)一個(gè)文件上傳下載功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),清水河企業(yè)網(wǎng)站建設(shè),清水河品牌網(wǎng)站建設(shè),網(wǎng)站定制,清水河網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,清水河網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。upload 文件上傳
html form標(biāo)簽內(nèi)設(shè)置enctype=”multipart/form-data”是必須的,這樣才可以上傳文件,方式為post ,在服務(wù)端使用multer時(shí),基本與官網(wǎng)相同,引用中間件multer,app.post(‘\upload',upload.single(‘name'),function(){}); 指定單文件上傳,參數(shù)是html的input里面的name ,這樣就可以上傳成功,但是問(wèn)題是multer不會(huì)管你的后綴,上傳到upload文件夾的文件有一個(gè)亂序名稱但是沒(méi)有后綴,所以我增加了這個(gè)功能。
req.file是文件信息,取得原名稱,經(jīng)過(guò)數(shù)組以及堆棧等處理得到后綴'.jpg' , 用fs.renameSync()方法重命名文件,加上本來(lái)的后綴。這樣真正的上傳成功。唯一的缺點(diǎn)是沒(méi)有實(shí)現(xiàn)改變文件名字,使用官網(wǎng)方式出現(xiàn)了錯(cuò)誤,所以沒(méi)有深究。。
download 文件下載
網(wǎng)上基本上是express對(duì)res.download的封裝以及fs方法為主,注意要把文件夾設(shè)定為靜態(tài)文件。出現(xiàn)的問(wèn)題是點(diǎn)擊之后就會(huì)在新頁(yè)面顯示要下載的文件,無(wú)論是圖片還是音樂(lè)。。這讓我很困擾,但是找了很久也沒(méi)有很好的解決。用IE訪問(wèn)結(jié)果是會(huì)出現(xiàn)下載還是查看的選項(xiàng)。。很迷。總之就是這樣了,一晚上的努力,我很滿足。。嘻嘻
服務(wù)端
//index.js var fs = require('fs') var express = require('express') var multer = require('multer') const path = require('path'); var app = express(); var upload = multer({dest:'upload/'}); //多文件上傳 (限定上傳文件個(gè)數(shù))(沒(méi)有修改后綴) app.post('/upload-multi',upload.array('myfile',2),function(req,res,next){ res.send("2 done"); }) //單文件上傳獲取信息 app.post('/upload-single',upload.single('myfile'),function(req,res,next){ var file=req.file; // console.log("名稱:%s",file.originalname); // console.log("mime:%s",file.mimetype); //以下代碼得到文件后綴 name=file.originalname; nameArray=name.split(''); var nameMime=[]; l=nameArray.pop(); nameMime.unshift(l); while(nameArray.length!=0&&l!='.'){ l=nameArray.pop(); nameMime.unshift(l); } //Mime是文件的后綴 Mime=nameMime.join(''); console.log(Mime); res.send("done"); //重命名文件 加上文件后綴 fs.renameSync('./upload/'+file.filename,'./upload/'+file.filename+Mime); }) //文件下載嘗試(chrome會(huì)直接在頁(yè)面上展示。.最后也沒(méi)有解決) //設(shè)置download文件夾為靜態(tài) 才能下載 app.use('/download', express.static(path.join(__dirname, 'download'))); // app.get('/download',function(req,res){ // var path='./download/aa.mp3'; // res.download(path,'aa.mp3'); // }); app.get('/download', function(req, res){ var file = __dirname + '/download/aa.mp3'; res.download(file); }); app.get('/',function(req,res,next){ res.sendFile(__dirname+"/index.html"); }) app.listen(3000);
客戶端
//index.html <!DOCTYPE html> <html> <head> <title>上傳文件</title> <meta charset="utf-8"> </head> <body> <form enctype="multipart/form-data" action="/upload-single" method="post"> <input type="file" name="myfile"></input> <input type="submit" value="提交"></input> </form> <form enctype="multipart/form-data" action="/upload-multi" method="post"> <input type="file" name="myfile"></input> <input type="file" name="myfile"></input> <input type="submit" value="提交"></input> </form> <a href="download/aa.mp3" rel="external nofollow" >下載文件</a> </body> </html>
上述就是小編為大家分享的怎么在nodejs中利用multer實(shí)現(xiàn)一個(gè)文件上傳下載功能了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站m.newbst.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前名稱:怎么在nodejs中利用multer實(shí)現(xiàn)一個(gè)文件上傳下載功能-創(chuàng)新互聯(lián)
鏈接分享:http://m.newbst.com/article28/cepicp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站排名、建站公司、做網(wǎng)站、定制開(kāi)發(fā)、用戶體驗(yàn)
聲明:本網(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)
猜你還喜歡下面的內(nèi)容