首页 > 作文

前端vue+express实现文件的上传下载示例

更新时间:2023-04-04 09:15:35 阅读: 评论:0

新建rver.js

yarn init -yyarn add express nodemon -dvar express = require("express");const fs = require("fs");var path = require("path");const multer = require("multer"); //指定路径的var app = express();app.u(express.json());app.u(express.urlencoded({ extended: true }));// 实数前端解决跨域问题app.all("*", (req, res, next) => {  res.header("access-control-allow-origin", "*");  next();});// 访问静态资源app.u(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.par(originalname).ext;  fs.rename(req.files[0].path, newname, function (err) {    if (err) {      res.nd({ code: 0, msg: "上传失败", data: [] });    } el {      res.nd({ 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="ur"/>      <input type="submit" />    </form>

第一种: input输入框

   <input t活动策划范文ype="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"        },        respontype: "arraybuffer" // arraybuffer是js中提供处理二进制的接口    }).then(respon => {                // 用返回二进制数据创建一个blob实例       if(!respon) return;      let blob = new blob([respon.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属性为文件路径,d孙膑赛马ownload属性可以设置文件名称                ele.href = url                ele.download = this.name                // 将a标签添加到页面并模拟点击                document.querylectorall("body")[0].appendchild(ele)                ele.click()                // 移除a标签                ele.remove()            });  },

(3) 附加:二进制流图片的下载

   // 二进制流图片文件的下载  downloadimg() {     axios({        method: 'get',        url: `http://localhost:9527/download/img`,        respontype: 'arraybuffer',      三比  params: {          id: 12        }      }).then(res => {        var src = 'data:image/jpg;ba64,' + btoa(new uint8arra世界读书日2021年主题y(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文件上传下载内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 09:15:17,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/112fba342e62908950d824219e8da71c.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:前端vue+express实现文件的上传下载示例.doc

本文 PDF 下载地址:前端vue+express实现文件的上传下载示例.pdf

标签:文件   路径   第一种   上传下载
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图