如何使用a标签或者按钮点击下载文件

提示:本地服务点击只进行了跳转没有下载的情况,大多数是因为链接不同源。

本人在做一个项目管理系统时需求点击按钮下载文件,测试多种方法下载出来的文件都是损坏。查询多个文章,找到在我使用时的具体的bug问题。(如果不是新手可直接跳转到问题解决模块)


一、a标签

<a> 标签定义超链接,用于从一个页面链接到另一个页面。

<a> 元素最重要的属性是 href 属性,它指定链接的目标。

二、a标签的使用

1.元素中使用

<a href="链接地址"></a>

使用a标签下载文件的方法

<a :href="链接地址" target="downloadFile" download>文件名</a>

2.动态添加a标签下载(js中)

let url = 链接地址;
downloadFile(url)
function downloadFile(url) {
    //下载文件
    console.log(url)
    let a = document.createElement("a");
    a.setAttribute("href", url);
    a.setAttribute("download", 文件名);
    a.setAttribute("target", "_blank");
    let clickEvent = document.createEvent("MouseEvents");
    clickEvent.initEvent("click", true, true);
    a.dispatchEvent(clickEvent);
}

三、问题解决

使用上述的方法可能会出现文件跳转链接展示但是没有下载的问题。这里提供两个我找到的解决方法。

1.在链接地址后拼接'?response-content-type=application/octet-stream'

let url = 链接地址 + '?response-content-type=application/octet-stream';
downloadFile(url)
function downloadFile(url) {
    //下载文件
    console.log(url)
    let a = document.createElement("a");
    a.setAttribute("href", url);
    a.setAttribute("download", 文件名);
    a.setAttribute("target", "_blank");
    let clickEvent = document.createEvent("MouseEvents");
    clickEvent.initEvent("click", true, true);
    a.dispatchEvent(clickEvent);
}

2.在进行拼接后还是只跳转不下载

这种情况主要是因为现在浏览器的文件下载规则问题,新版的浏览器像Google浏览器之类下载文件是需要网页和文件地址是同源的。如果不同源的话只会打开而不会下载。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue中通过点击a标签进行文件下载的方法是使用a标签的href属性来指定文件的地址,并在a标签中添加download属性。例如: ```html <a href="具体的文件的地址" download>点击下载文件</a> ``` 这样当用户点击该链接时,浏览器会自动下载文件到本地。 在Vue项目中,可以通过在模板中添加上述代码来实现点击a标签下载文件的功能。同时,你也可以在Vue的methods中定义一个方法,在该方法中执行文件下载的逻辑,并通过点击按钮来触发该方法。例如: ```html <template> <div> <button @click="downloadFile">点击下载文件</button> </div> </template> <script> export default { methods: { downloadFile() { // 执行文件下载的逻辑 // 可以使用window.location.href或者axios等库来实现文件下载 } } } </script> ``` 在downloadFile方法中,你可以使用window.location.href来直接下载文件,或者使用axios等库发送请求来下载文件。这样当用户点击按钮时,就会执行文件下载的逻辑。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [前端Vue项目中点击a标签实现下载文件到本地的功能](https://blog.csdn.net/AiGarry/article/details/124289858)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Vue:a标签点击和file-saver/FileSaver.js实现文件下载](https://blog.csdn.net/mouday/article/details/111958466)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue实现点击按钮下载文件功能](https://download.csdn.net/download/weixin_38636763/14828985)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值