【node】---multer模塊實現圖片上傳---【巷子】


1、安裝muterl第三方模塊

cnpm install multer --save

 

2、使用

multer在解析完成后,會向request對象中添加一個body對象和一個file或者files對象(上傳多個文件的時候用files對象),其中body中包含提交的字段,而file中包含上傳的文件

//1、引入express模塊
const express = require("express");

//2、引入multer模塊
const multer = require("multer");

//3、對上傳的文件進行配置
var storage = multer.diskStorage({

//指定文件上傳到服務器的路徑
  destination: function (req, file, cb) {
    cb(null, '/public/img')
  },

//指定上傳到服務器文件的名稱
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
  }
})
 
var upload = multer({ storage: storage })


//4、使用 在使用路由的時候調用upload方法 name值是客戶端傳遞的key值
var cpUpload = upload.fields([{ name: 'goodsImg', maxCount: 1 }, { name: 'goodsImgs', maxCount: 8 }])
router.post('/goods/addGoods',cpUpload,goodsController.addgoods );

 

3、upload方法

upload.single('key值'):當傳遞單個文件的時候,對文件的解析

upload.array('key值', maxCout):當傳遞一組文件的時候,對文件的解析 key值是前端傳遞的key值 maxcout是最多能傳遞多少個文件

upload.fields([{ name: 'key值', maxCount: num }, { name: 'key值', maxCount: num }]):當傳遞多個文件域的時候,對文件的解析

 

4、客戶端傳遞圖片

//創建一個表單數據對象
var formData = new FormData();
var goods_name = $("#goods_name");
var goods_des = $("#goods_des");
var goods_price = $("#goods_price");
var goods_img = $("#goods_img");
var goods_imgs = $("#goods_imgs");
formData.append("goodsName",goods_name.val());
formData.append("gooddsDes",goods_des.val())
formData.append("goodsPrice",goods_price.val())
formData.append("goodsImg",goods_img[0].files[0])
for(var i=0;i<goods_imgs[0].files.length;i++){
formData.append("goodsImgs",goods_imgs[0].files[i])
}

$.ajax({
type:"post",
url:"/api/goods/addGoods",
cache: false,//不讀取緩存中的結果 true的話會讀緩存 其實post本身就不會讀取緩存中的結構
processData: false,//默認情況下,通過data選項傳遞進來的數據,如果是一個對象(技術上講只要不是字符串),都會處理轉化成一個查詢字符串,以配合默認內容類型 "application/x-www-form-urlencoded"。如果要發送 DOM 樹信息或其它不希望轉換的信息,請設置為 false。
contentType: false,//數據編碼格式不使用jquery的方式 為了避免 JQuery 對其操作,從而失去分界符,而使服務器不能正常解析文件。
data:formData,
success:$.proxy(this.handleSuccCb)
})

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM