新建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 条评论) |