亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

前端vue+express實現(xiàn)文件的上傳下載示例

 更新時間:2021年12月31日 16:55:29   作者:lxslxskxs  
本文主要介紹了前端vue+express實現(xiàn)文件的上傳下載示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

新建server.js

yarn init -y
yarn add express nodemon -D
var express = require("express");
const fs = require("fs");
var path = require("path");
const multer = require("multer"); //指定路徑的

var app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// 前端解決跨域問題
app.all("*", (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  next();
});
// 訪問靜態(tài)資源
app.use(express.static(path.join(__dirname)));

// 文件上傳
app.post("/upload", multer({ dest: "./public" }).any(), (req, res) => {
  const { fieldname, originalname } = req.files[0];
  // 創(chuàng)建一個新路徑
  const name = fieldname.slice(0, fieldname.indexOf("."));
  const newName = "public/" + name + path.parse(originalname).ext;
  fs.rename(req.files[0].path, newName, function (err) {
    if (err) {
      res.send({ code: 0, msg: "上傳失敗", data: [] });
    } else {
      res.send({ code: 1, msg: "上傳成功", data: newName });
    }
  });
});
// 文件下載
app.get('/download', function(req, res) {
  res.download('./public/test.xls');
});

// 圖片下載
app.get('/download/img', function(req, res) {
  res.download('./public/2.jpg');
});

let port = 9527;
app.listen(port, () => console.log(`端口啟動: http://localhost:${port}`));


(1):前端文件上傳請求

第一種: form表單

  <form action="http://localhost:9527/upload" method="POST" encType="multipart/form-data">
      <input type="file" name="user"/>
      <input type="submit" />
    </form>

在這里插入圖片描述

第一種: input輸入框

   <input type="file"  @change="changeHandler($event)"/>
     changeHandler(event) {
      let files  = event.target.files[0];
      console.log("files",files)
      let data = new FormData();
      data.append(files.name,files);
      console.log("data",data)
      axios.post("http://localhost:9527/upload",data,{
        headers:{
          "Content-Type":"multipart/form-data"
        }
      }).then(res =>{
        console.log("res",res)
      })
    },

在這里插入圖片描述

(2):前端文件下載

第一種: 后端返回一個下載的鏈接地址,前端直接使用 即可
第二種: 使用二進制流文件下載

    <input type="button" value="點擊下載" @click="handleDownload">
      handleDownload() {  
    axios({  
      method: 'get',  
      url: "http://localhost:9527/download",  
      data: {    
        test: "test data"  
      },  
      responseType: "arraybuffer" // arraybuffer是js中提供處理二進制的接口
    }).then(response => {          
      // 用返回二進制數(shù)據(jù)創(chuàng)建一個Blob實例 
      if(!response) return;
      let blob = new Blob([response.data], {            
        type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 
      }) // for .xlsx files          
      // 通過URL.createObjectURL生成文件路徑          
      let url = window.URL.createObjectURL(blob) 
      console.log("url==========",url)        
      // 創(chuàng)建a標簽          
      let ele = document.createElement("a")          
      ele.style.display = 'none'          
      // 設置href屬性為文件路徑,download屬性可以設置文件名稱          
      ele.href = url          
      ele.download = this.name          
      // 將a標簽添加到頁面并模擬點擊          
      document.querySelectorAll("body")[0].appendChild(ele)          
      ele.click()          
      // 移除a標簽          
      ele.remove()        
    });
  },

在這里插入圖片描述

(3) 附加:二進制流圖片的下載

   // 二進制流圖片文件的下載
  downLoadImg() {
     axios({
        method: 'get',
        url: `http://localhost:9527/download/img`,
        responseType: 'arraybuffer',
        params: {
          id: 12
        }
      }).then(res => {
        var src = 'data:image/jpg;base64,' + btoa(new Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), ''))
       // this.srcImg = src // 圖片回顯
        var a = document.createElement('a')
        a.href = src
        a.download = '2.jpg'
        a.click()
        a.remove()
      })
    }

image.png

到此這篇關于前端vue+express實現(xiàn)文件的上傳下載示例的文章就介紹到這了,更多相關vue express文件上傳下載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決vue數(shù)據(jù)更新但table內(nèi)容不更新的問題

    解決vue數(shù)據(jù)更新但table內(nèi)容不更新的問題

    這篇文章主要給大家介紹了vue數(shù)據(jù)更新table內(nèi)容不更新解決方法,文中有詳細的代碼示例供大家作為參考,感興趣的同學可以參考閱讀一下
    2023-08-08
  • vue實現(xiàn)頁面自適應的常用4種方法

    vue實現(xiàn)頁面自適應的常用4種方法

    前端頁面自適應有很多方法可以實現(xiàn),本文小編將為大家詳細介紹四種常用的方法,并提供相應的代碼示例,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • 使用vue-touch報priority錯誤的解決

    使用vue-touch報priority錯誤的解決

    這篇文章主要介紹了使用vue-touch報priority錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 如何在vite初始化項目中安裝scss以及scss的使用

    如何在vite初始化項目中安裝scss以及scss的使用

    今天想要給vite項目,添加全局的scss變量文件引用,這樣我們在使用scss變量和函數(shù)的時候就不需要每個組件都取引用了,下面這篇文章主要給大家介紹了關于如何在vite初始化項目中安裝scss以及scss使用的相關資料,需要的朋友可以參考下
    2022-10-10
  • vue實現(xiàn)頁面跳轉和參數(shù)傳遞的兩種方式

    vue實現(xiàn)頁面跳轉和參數(shù)傳遞的兩種方式

    這篇文章主要介紹了vue頁面跳轉和參數(shù)傳遞的兩種方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • vue.js數(shù)據(jù)綁定的方法(單向、雙向和一次性綁定)

    vue.js數(shù)據(jù)綁定的方法(單向、雙向和一次性綁定)

    本篇文章主要介紹了vue.js數(shù)據(jù)綁定的方法(單向、雙向和一次性綁定),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vue $nextTick 為什么能獲取到最新Dom源碼解析

    Vue $nextTick 為什么能獲取到最新Dom源碼解析

    這篇文章主要為大家介紹了Vue $nextTick 為什么能獲取到最新Dom源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • vuex的使用步驟

    vuex的使用步驟

    這篇文章主要介紹了vuex的使用步驟,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • Vue動畫事件詳解及過渡動畫實例

    Vue動畫事件詳解及過渡動畫實例

    通過 Vue.js 的過渡系統(tǒng),可以在元素從 DOM 中插入或移除時自動應用過渡效果。Vue.js 會在適當?shù)臅r機為你觸發(fā) CSS 過渡或動畫,你也可以提供相應的 JavaScript 鉤子函數(shù)在過渡過程中執(zhí)行自定義的 DOM 操作
    2019-02-02
  • Vue3組件異步更新和nextTick運行機制源碼解讀

    Vue3組件異步更新和nextTick運行機制源碼解讀

    這篇文章主要為大家介紹了Vue3組件異步更新和nextTick運行機制源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論