亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

前端vue+express怎么實現文件的上傳下載

發布時間:2022-01-04 17:19:43 來源:億速云 閱讀:183 作者:iii 欄目:開發技術

本篇內容主要講解“前端vue+express怎么實現文件的上傳下載”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“前端vue+express怎么實現文件的上傳下載”吧!

新建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();
});
// 訪問靜態資源
app.use(express.static(path.join(__dirname)));

// 文件上傳
app.post("/upload", multer({ dest: "./public" }).any(), (req, res) => {
  const { fieldname, originalname } = req.files[0];
  // 創建一個新路徑
  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>

前端vue+express怎么實現文件的上傳下載

第一種: 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)
      })
    },

前端vue+express怎么實現文件的上傳下載

(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 => {          
      // 用返回二進制數據創建一個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)        
      // 創建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()        
    });
  },

前端vue+express怎么實現文件的上傳下載

(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()
      })
    }

前端vue+express怎么實現文件的上傳下載

到此,相信大家對“前端vue+express怎么實現文件的上傳下載”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽阳县| 新宾| 上饶市| 玉田县| 磐安县| 临澧县| 小金县| 沙雅县| 资阳市| 南召县| 偏关县| 弥勒县| 沁阳市| 巨鹿县| 元谋县| 岢岚县| 沅江市| 宜宾县| 武清区| 文登市| 冕宁县| 安康市| 双城市| 黑龙江省| 宜昌市| 龙川县| 麻栗坡县| 蓬安县| 达日县| 甘泉县| 古浪县| 壤塘县| 黑水县| 老河口市| 阳新县| 鹿邑县| 连城县| 哈密市| 师宗县| 大余县| 星座|