亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當前位置:首頁 > IT技術 > Web編程 > 正文

              node上傳圖片-vue前端+express后臺
              2022-05-11 11:06:57



              上傳圖片是很常見的功能
              但是這個功能有點挑戰(zhàn)
              要處理好:1.前端圖片上傳,2.后臺接收圖片,3.后臺保存圖片,4.將保存地址返回給前端,前端回顯圖片。
              有不懂的同學可以咨詢我微信號yizheng369
              另外一份html+node參考源碼:??https://gitee.com/618859/picture-upload-node??


              效果

              將電腦選擇的文件圖片預覽:URL.createObjectURL(file.raw)

              node上傳圖片-vue前端+express后臺_javascript

              vue前端代碼

              注意:前端此處用了??element-ui??框架

              sureFun() {
              // 準備上傳文件數(shù)據(jù)
              var formData = new FormData();
              formData.append("file", this.activeTopImg);
              formData.append("name", '圖片名稱');

              let config = {
              headers: {
              'Content-Type': 'multipart/form-data'
              }
              }
              this.$axios
              .post("/api/fileUpload", formData, config)
              .then((res) => {
              console.log("提交:", res);
              this.$message({
              message: "提交成功",
              type: "warning",
              });
              // 重新獲取數(shù)據(jù)
              // this.getData();
              })
              .catch((err) => {
              console.log("出錯", err);
              this.$message({
              message: "服務器出錯!",
              type: "error",
              });
              });
              },

              node的express后臺

              // -------------- 圖片文件上傳處理 start --------------------
              var Path = require('path')
              // 讀取靜態(tài)資源
              app.use(express.static('./'))
              // 引入multer中間件,用于處理上傳的文件數(shù)據(jù)
              const multer = require('multer')
              // 通過配置multer的dest屬性, 將文件儲存在項目下的tmp文件中
              app.use(multer({ dest: './tmp/' }).any())
              //

              // 文件上傳接口
              app.post('/fileUpload', async function (req, res) {
              // 上傳的文件在req.files中
              console.log('接收到圖片上傳數(shù)據(jù):', req.body, req.files);

              // 可能有多張圖片
              let arr = req.files;
              let allUrl = []
              for (let i = 0; i < arr.length; i++) {
              const filename = arr[i].destination + arr[i].originalname;
              console.log('默認名1:', arr[i].path);
              console.log('改名:', filename);
              // 修改圖片文件名
              fs.renameSync(arr[i].path, filename)
              console.log('改名成功:', i);
              let str = Path.join(serverUrl,filename);
              // window的路徑分割符 Path.sep 為反雙斜杠 \ 此處要改為 單斜杠 /
              let url = str.split(Path.sep).join('/')
              url = 'http://'+url
              allUrl.push({
              id: arr[i].fieldname,
              url,
              })
              }
              res.send(
              {
              msg: 'upload successfully',
              allUrl
              })
              });
              // -------------- 圖片文件上傳處理 end --------------------

              祝你好運!

              不懂你會問我嗎?



              本文摘自 :https://blog.51cto.com/u

              開通會員,享受整站包年服務立即開通 >