<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          nodejs--圖片上傳

          2023-2-8    前端達人

          前端部分

          html部分

          
          
          1. <div class="add">
          2. <p>商品名稱: <input type="text" class="productName"></p>
          3. <p>商品價格: <input type="number" class="price" ></p>
          4. <!-- multiple: 允許同時上傳多張圖片 -->
          5. <!-- <p>商品圖片: <input type="file" class="file" multiple="multiple"></p> -->
          6. <p>商品圖片: <input type="file" class="file"></p>
          7. <p><button class="add-btn">添加商品</button></p>
          8. </div>
          9. <script src="js/axios.js"></script>
          10. <script src="js/util.js"></script>
          11. <script src="js/upload.js"></script>

          upload.js

          
          
          1. // 新建表單數據對象,用來存儲上傳的文件及上傳的其它數據
          2. let param = new FormData()
          3. $(".file").onchange = function(){
          4. //獲取圖片信息
          5. let file = this.files[0]
          6. //"file"為前后端約定vb的屬性名
          7. param.append("file",file)
          8. }
          9. $(".add-btn").onclick = function(){
          10. let productName = $(".productName").value;
          11. let price = $(".price").value;
          12. param.append("productName",productName)
          13. param.append("price",price)
          14. axios.post("/product",param,{
          15. headers: {
          16. // 默認提交的類型
          17. // "content-type": "application/json"
          18. // 復雜的表單數據(只要上傳文件,就必須是下面的類型)
          19. "content-type": "multipart/form-data"
          20. }
          21. })
          22. .then((res)=>{
          23. console.log(res.data);
          24. })
          25. }

          postman

           

          Express后端部分

          使用multer實現圖片上傳

          下載

          npm i multer -S

          引入

          
          
          1. const multer = require("multer")
          2. const path = require("path")

          配置

          注意: 該文件在/router文件夾中,而uploads存放上傳圖片文件夾在根目錄

          
          
          1. var storage = multer.diskStorage({
          2. // 配置文件上傳后存儲的路徑
          3. destination: function (req, file, cb) {
          4. // NodeJS的兩個全局變量
          5. // console.log(__dirname); //獲取當前文件在服務器上的完整目錄
          6. // console.log(__filename); //獲取當前文件在服務器上的完整路徑
          7. cb(null, path.join(__dirname,'../uploads'))
          8. },
          9. // 配置文件上傳后存儲的路徑和文件名
          10. filename: function (req, file, cb) {
          11. console.log('file',file);
          12. cb(null, Date.now() + path.extname(file.originalname))
          13. }
          14. })
          15. var upload = multer({ storage: storage })

          在路由中使用

          
          
          1. //添加商品
          2. router.post("/product",upload.single("file1"),(req,res)=>{
          3. //接收普通文本參數
          4. let {productName,price} = req.body;
          5. 、接收上傳文件數據 -->
          6. let imgUrl = req.file.filename;
          7. let sql = "insert into product (productName,price,imgUrl) values (?,?,?)"
          8. conn.query(sql,[productName, price , imgUrl],(err,result)=>{
          9. if (err){
          10. console.log('增加失敗');
          11. return;
          12. }
          13. let data;
          14. if (result.affectedRows === 1){
          15. data = {
          16. code: 0,
          17. msg: '添加成功'
          18. }
          19. }else{
          20. data = {
          21. code: 1,
          22. msg: '添加失敗'
          23. }
          24. }
          25. res.send(data)
          26. })
          27. })

          如果抽離路由模塊中的處理函數upload.single("file1")寫在Router模塊

          實現寫在抽取的模塊 

           NODEJS--express圖片上傳 - 簡書

          如果req.body為空,可以用nodejs后臺文件上傳模塊connect-multiparty

          使用方法如下:

          1.  安裝模塊

          npm install connect-multiparty --save

          2.  引入模塊

          var multipart = require('connect-multiparty');

          var multipartMiddleware = multipart();

          3.  使用模塊

          const express = require('express')

          const router = express.Router()

          router.post('/formdata',multipartMiddleware, function (req,res) {

          console.log(req.query)

          //分別返回body,文件屬性,以及文件存放地址

          });
          ————————————————
          原文鏈接:https://blog.csdn.net/zjwengyidong/article/details/51407903




          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加藍小助,微信號:ben_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系01063334945。


          分享此文一切功德,皆悉回向給文章原作者及眾讀者.
          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合