最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

新建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)建一個(gè)新路徑
  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(`端口啟動(dòng): http://localhost:${port}`));


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

第一種: 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):前端文件下載

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

    <input type="button" value="點(diǎn)擊下載" @click="handleDownload">
      handleDownload() {  
    axios({  
      method: 'get',  
      url: "http://localhost:9527/download",  
      data: {    
        test: "test data"  
      },  
      responseType: "arraybuffer" // arraybuffer是js中提供處理二進(jìn)制的接口
    }).then(response => {          
      // 用返回二進(jìn)制數(shù)據(jù)創(chuàng)建一個(gè)Blob實(shí)例 
      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標(biāo)簽          
      let ele = document.createElement("a")          
      ele.style.display = 'none'          
      // 設(shè)置href屬性為文件路徑,download屬性可以設(shè)置文件名稱          
      ele.href = url          
      ele.download = this.name          
      // 將a標(biāo)簽添加到頁面并模擬點(diǎn)擊          
      document.querySelectorAll("body")[0].appendChild(ele)          
      ele.click()          
      // 移除a標(biāo)簽          
      ele.remove()        
    });
  },

在這里插入圖片描述

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

   // 二進(jìn)制流圖片文件的下載
  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

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

相關(guān)文章

  • Vue3實(shí)現(xiàn)轉(zhuǎn)盤抽獎(jiǎng)效果的示例詳解

    Vue3實(shí)現(xiàn)轉(zhuǎn)盤抽獎(jiǎng)效果的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何通過Vue3實(shí)現(xiàn)簡(jiǎn)單的轉(zhuǎn)盤抽獎(jiǎng)效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Vue移動(dòng)端下拉加載更多數(shù)據(jù)onload實(shí)現(xiàn)方法淺析

    Vue移動(dòng)端下拉加載更多數(shù)據(jù)onload實(shí)現(xiàn)方法淺析

    這篇文章主要介紹了Vue移動(dòng)端下拉加載更多數(shù)據(jù)onload實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 如何使用Vue的思想封裝一個(gè)Storage

    如何使用Vue的思想封裝一個(gè)Storage

    作為Web Storage API的接口,Storage 提供了訪問特定域名下的會(huì)話存儲(chǔ)或本地存儲(chǔ)的功能,例如可以添加、修改或刪除存儲(chǔ)的數(shù)據(jù)項(xiàng),這篇文章主要給大家介紹了關(guān)于如何使用Vue的思想封裝一個(gè)Storage的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Vue路由傳參及props解耦深入分析

    Vue路由傳參及props解耦深入分析

    vue路由傳參的使用場(chǎng)景一般都是應(yīng)用在父路由跳轉(zhuǎn)到子路由時(shí),攜帶參數(shù)跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于vue路由傳參方式的方式總結(jié)及獲取參數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 詳解如何在Vue3+TS的項(xiàng)目中使用NProgress進(jìn)度條

    詳解如何在Vue3+TS的項(xiàng)目中使用NProgress進(jìn)度條

    本文主要介紹了詳解如何在Vue3+TS的項(xiàng)目中使用NProgress進(jìn)度條,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • QT和vue交互的實(shí)現(xiàn)示例

    QT和vue交互的實(shí)現(xiàn)示例

    本文主要介紹了QT和vue交互的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • vue實(shí)現(xiàn)ajax滾動(dòng)下拉加載,同時(shí)具有l(wèi)oading效果(推薦)

    vue實(shí)現(xiàn)ajax滾動(dòng)下拉加載,同時(shí)具有l(wèi)oading效果(推薦)

    這篇文章主要介紹了vue實(shí)現(xiàn)ajax滾動(dòng)下拉加載,同時(shí)具有l(wèi)oading效果的實(shí)現(xiàn)代碼,文章包括難點(diǎn)說明,介紹的非常詳細(xì),感興趣的朋友參考下
    2017-01-01
  • vue3.x使用swiperUI動(dòng)態(tài)加載圖片失敗的解決方法

    vue3.x使用swiperUI動(dòng)態(tài)加載圖片失敗的解決方法

    這篇文章主要為大家詳細(xì)介紹了vue3.x使用swiperUI動(dòng)態(tài)加載圖片失敗的解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue實(shí)現(xiàn)微信瀏覽器左上角返回按鈕攔截功能

    vue實(shí)現(xiàn)微信瀏覽器左上角返回按鈕攔截功能

    這篇文章主要介紹了vue實(shí)現(xiàn)微信瀏覽器左上角返回按鈕攔截功能,本文通過實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • vue3+ts項(xiàng)目中.env配置環(huán)境變量與情景配置方式

    vue3+ts項(xiàng)目中.env配置環(huán)境變量與情景配置方式

    本文介紹了如何在Vite中配置環(huán)境變量和不同的運(yùn)行模式,環(huán)境變量文件以.env開頭,僅VITE_前綴的變量會(huì)被暴露,開發(fā)模式加載.env.development,生產(chǎn)模式加載.env.production,NODE_ENV用于區(qū)分開發(fā)和生產(chǎn)環(huán)境
    2024-10-10

最新評(píng)論

台中市| 勃利县| 台湾省| 曲阜市| 泰顺县| 左云县| 巴楚县| 科技| 喜德县| 平定县| 吉隆县| 香港| 永清县| 沧源| 名山县| 连州市| 东乡| 库伦旗| 平陆县| 海盐县| 蓝田县| 横峰县| 宁国市| 宝坻区| 陆川县| 本溪| 五常市| 贺兰县| 弥渡县| 苏尼特右旗| 色达县| 镶黄旗| 仙游县| 南川市| 抚松县| 平乐县| 延边| 鱼台县| 西藏| 内黄县| 腾冲县|