全面解析node 表單的圖片上傳
node 全面解析表單的圖片上傳 ,multiparty解析與內(nèi)容類(lèi)型的HTTP請(qǐng)求multipart/form-data,也被稱(chēng)為文件上傳。
multiparty安裝
npm install multiparty
html代碼
<form action="/api/uppic" method="post" > <input type="file" name="pic" > <input type="submit"> </form>
node 代碼
app.route('/api/uppic').post(function(req,res){ var multiparty = require('multiparty'); var form = new multiparty.Form();//新建表單 //設(shè)置編輯 form.encoding = 'utf-8'; //設(shè)置圖片存儲(chǔ)路徑 form.uploadDir = "Uploads/gaoxiao/"; form.keepExtensions = true; //保留后綴 form.maxFieldsSize = 2*1024*1024; //內(nèi)存大小 form.maxFilesSize= 5*1024*1024;//文件字節(jié)大小限制,超出會(huì)報(bào)錯(cuò)err //表單解析 form.parse(req, function(err,fields,files) { //報(bào)錯(cuò)處理 if(err){ console.log(err); var u={"error" :1,"message":'請(qǐng)上傳5M以圖片'}; res.end(JSON.stringify(u)); return false; } //獲取路徑 var oldpath=files.imgFile[0]['path']; //文件后綴處理格式 if(oldpath.indexOf('.jpg')>=0){ var suffix='.jpg'; }else if(oldpath.indexOf('.png')>=0){ var suffix='.png'; }else if(oldpath.indexOf('.gif')>=0){ var suffix='.gif'; }else{ var u={"error" :1,"message":'請(qǐng)上傳正確格式'}; res.end(JSON.stringify(u)); return false; } var url='Uploads/gaoxiao/'+Date.now()+suffix; var fs=require('fs'); //給圖片修改名稱(chēng) fs.renameSync(oldpath,url); var u={ "error" : 0, "url" : '/'+url} res.end(JSON.stringify(u)); }); });
multiparty
multiparty.Form創(chuàng)建一個(gè)新的形式**
encoding:用于輸入表單字段集編碼。默認(rèn)為utf8
maxFieldsSize:限制內(nèi)存的所有字段(而不是文件)的量可以以字節(jié)為單位分配。如果超過(guò)該值,一個(gè)error事件被發(fā)射。默認(rèn)大小為2MB。
maxFields:限制,將發(fā)射一個(gè)前解析字段的數(shù)目error的事件。一個(gè)文件算作在這種情況下,一個(gè)字段。默認(rèn)為1000。
maxFilesSize:上傳文件大小限制,只有當(dāng)相關(guān)autoFiles的true。限制接受合并所有文件的總字節(jié)數(shù)。如果超過(guò)該值,一個(gè)error事件被發(fā)射。默認(rèn)值是無(wú)窮大。
autoFields:?jiǎn)⒂胒ield事件和禁用part事件的字段。這是自動(dòng)設(shè)置為true如果添加了一個(gè)field偵聽(tīng)器。
uploadDir:只有當(dāng)相關(guān)autoFiles的true。目錄放置文件上傳。您以后可以使用移動(dòng)它們fs.rename()。默認(rèn)為os.tmpDir()。
form.parse(req,function(err,fields,files){})
- fields: 是一個(gè)對(duì)象(上傳名稱(chēng)和值),其屬性名的字段名稱(chēng)和值是字段值的數(shù)組。
- files :是一個(gè)對(duì)象(上傳名稱(chēng)和服務(wù)器文件路徑),其屬性名的字段名稱(chēng)和值是文件對(duì)象的數(shù)組。
files內(nèi)文件對(duì)象file - 具有這些屬性的對(duì)象:
- fieldName-同name-此文件中的字段名
- originalFilename -文件名,對(duì)于該文件的用戶(hù)的報(bào)告
- path - 在磁盤(pán)上載文件的絕對(duì)路徑
- headers - 這是與該文件一起發(fā)送的HTTP頭
- size -以字節(jié)的文件大小
node表單解析(multiparty)的api地址:https://www.npmjs.com/package/multiparty
以上所述是小編給大家介紹的全面解析node 表單的圖片上傳,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- nodejs+mongodb aggregate級(jí)聯(lián)查詢(xún)操作示例
- Node.js+ES6+dropload.js實(shí)現(xiàn)移動(dòng)端下拉加載實(shí)例
- node微信開(kāi)發(fā)之獲取access_token+自定義菜單
- 詳解nodejs微信公眾號(hào)開(kāi)發(fā)——6.自定義菜單
- JavaScript NodeTree導(dǎo)航欄(菜單項(xiàng)JSON類(lèi)型/自制)
- nodejs 實(shí)現(xiàn)模擬form表單上傳文件
- Nodejs之http的表單提交
- Nodejs下用submit提交表單提示cannot post錯(cuò)誤的解決方法
- Node層模擬實(shí)現(xiàn)multipart表單的文件上傳示例
- 推薦一個(gè)基于Node.js的表單驗(yàn)證庫(kù)
- node省市區(qū)三級(jí)數(shù)據(jù)性能測(cè)評(píng)實(shí)例分析
相關(guān)文章
node.js程序作為服務(wù)并在windows下開(kāi)機(jī)自啟動(dòng)(用forever)
這篇文章主要介紹了node.js程序作為服務(wù)并在windows下開(kāi)機(jī)自啟動(dòng)的相關(guān)資料,因?yàn)閷?shí)現(xiàn)的功能比較簡(jiǎn)單,沒(méi)有選擇功能比較強(qiáng)大的pm2,文中選擇利用了forever,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-03-03Nodejs實(shí)現(xiàn)WebSocket代碼實(shí)例
這篇文章主要介紹了Nodejs實(shí)現(xiàn)WebSocket代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05node puppeteer(headless chrome)實(shí)現(xiàn)網(wǎng)站登錄
這篇文章主要介紹了node puppeteer(headless chrome)實(shí)現(xiàn)網(wǎng)站登錄,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05node.js開(kāi)機(jī)自啟動(dòng)腳本文件
這篇文章主要介紹了node.js開(kāi)機(jī)自啟動(dòng)腳本文件的方法和代碼,這里分享給大家,有需要的小伙伴參考下吧2014-12-12詳解node Async/Await 更好的異步編程解決方案
這篇文章主要介紹了詳解Async/Await 更好的異步編程解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05node.js中的http.request.end方法使用說(shuō)明
這篇文章主要介紹了node.js中的http.request.end方法使用說(shuō)明,本文介紹了http.request.end的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12