Vue如何下载本地静态资源static文件夹
目录
- 下载本地静态资源static文件夹
- 下载静态文件方法
- 下载
- 下载本地static静态文件的踩坑
下载本地静态资源static文件夹
下载静态文件方法
<a href="/static/serviceAgreement.docx" rel="external nofollow" rel="external nofollow" download="下载"></a>
下载
项目需要下载本地的docx文档,文档是放在本地的没有在服务器,所以需要下载本地静态资源文件,开始把文件放在了这里src目录下的assets资源文件下
下载报错 找不到文件路径查找原因是因为项目用的是vue-cli3, 在打包的时候并不知道会把assets
下的文件打包在哪里,但是在build的时候发现在根目录下的文件是打包在当前路径下的
所以我们要把需要下载的静态资源放在public文件夹下的static文件夹下就可以了
你可能在输入路径的时候会提示你是src,而不直接是static,但是你还是要直接输入static这个路径
<a href="/static/serviceAgreement.docx" rel="external nofollow" rel="external nofollow" download="服务协议"></a>
需要注意的是:cli2需要把要下载的文件放在static下面;cli4需要将文件放在public里面才不会被打包。
注意:href 指向项目中pdf文件的路径(不要出现中文),download 就是重命名的文件名,不设置的话就是默认文件名
发现vue版本是 3.0+ 所有把要下载的 文件直接放到public文件夹中(最好英文名字)
下载本地static静态文件的踩坑
接手了一个别人做的官网项目,里面添加一些功能,国际化(国际化);接着有一个下载的功能,一般都是后端甩一个链接你放上面就好,但是这个小功能再去找一个后端搞,太夸张了吧,那我们就自己搞!
方法当然是非常多的,但是我试了几种,总是会报一个错误;“未发现文件”,还有的时候就是:房子同一个地址下面;非压缩包的文件可以正常下载,但是压缩包就不能下载;
上代码
最简单的就是利用a标签
<el-button round ><a href="/xlsx/test.xlsx" rel="external nofollow" download="大赛报名表.xlsx" >报名参赛</a ></el-button>
会有人疑问路径是不是不对,
一般访问static里面的文件路径是:"…/…/static/zip/test.xlsx"
我开始也是这样写的,一直报错”未找到文件“,
后来看了cli版本,发现是cli4有一些变化,改成代码中的路径就可以了;
还有一个问题就是相同路径,普通文件可以下载,但是压缩包无法下载,(我试验过把压缩包和普通文件放到同一个路路径下依然有问题);
这个时候我们就不要在html里面去操作他了;给他一个点击事件
上代码
html
<el-button @click="download"> 题目下载 </el-button>
script
methods: { download() { window.location.href = "/zip/subject.zip"; }, },
两个文件的路径
做一下记录,以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。