node 全面解析表單的圖片上傳 ,multiparty解析與內容類型的HTTP請求multipart/form-data,也被稱為文件上傳。
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();//新建表單//設置編輯form.encoding = 'utf-8';//設置圖片存儲路徑form.uploadDir = "Uploads/gaoxiao/";form.keepExtensions = true; //保留后綴form.maxFieldsSize = 2*1024*1024; //內存大小form.maxFilesSize= 5*1024*1024;//文件字節大小限制,超出會報錯err//表單解析form.parse(req, function(err,fields,files) {//報錯處理if(err){console.log(err);var u={"error" :1,"message":'請上傳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":'請上傳正確格式'};res.end(JSON.stringify(u));return false;}var url='Uploads/gaoxiao/'+Date.now()+suffix;var fs=require('fs');//給圖片修改名稱fs.renameSync(oldpath,url);var u={ "error" : 0, "url" : '/'+url}res.end(JSON.stringify(u)); });});multiparty
multiparty.Form創建一個新的形式**
encoding:用于輸入表單字段集編碼。默認為utf8
maxFieldsSize:限制內存的所有字段(而不是文件)的量可以以字節為單位分配。如果超過該值,一個error事件被發射。默認大小為2MB。
maxFields:限制,將發射一個前解析字段的數目error的事件。一個文件算作在這種情況下,一個字段。默認為1000。
maxFilesSize:上傳文件大小限制,只有當相關autoFiles的true。限制接受合并所有文件的總字節數。如果超過該值,一個error事件被發射。默認值是無窮大。
autoFields:啟用field事件和禁用part事件的字段。這是自動設置為true如果添加了一個field偵聽器。
uploadDir:只有當相關autoFiles的true。目錄放置文件上傳。您以后可以使用移動它們fs.rename()。默認為os.tmpDir()。
form.parse(req,function(err,fields,files){})
- fields: 是一個對象(上傳名稱和值),其屬性名的字段名稱和值是字段值的數組。
- files :是一個對象(上傳名稱和服務器文件路徑),其屬性名的字段名稱和值是文件對象的數組。
files內文件對象file - 具有這些屬性的對象:
- fieldName-同name-此文件中的字段名
- originalFilename -文件名,對于該文件的用戶的報告
- path - 在磁盤上載文件的絕對路徑
- headers - 這是與該文件一起發送的HTTP頭
- size -以字節的文件大小
node表單解析(multiparty)的api地址:https://www.npmjs.com/package/multiparty
以上所述是小編給大家介紹的全面解析node 表單的圖片上傳,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答