iframe/a
iframe およびタグのダウンロード ファイルはすべて、ブラウザのデフォルトのダウンロード動作を呼び出します。
iframe 終了タグは、別のドキュメントを含むインライン フレームを作成し、iframe 経由でファイル (添付ファイル) をダウンロードし、iframe を非表示にし、クリック イベントがトリガーされたときに src を動的に設定してファイルのダウンロード機能を実現します。
要素 (またはアンカー要素) は、その href 属性を通じて、他の Web ページ、ファイル、同じページ内の場所、電子メール アドレス、またはその他の URL へのハイパーリンクを作成できます。
コード
<template>
<div id="app" class="container">
<!-- <img alt="Vue logo" src="./assets/logo.png" style="width: 40px; margin-left: 145px; margin-top: 40px; margin-bottom: 7px;"> -->
<!-- <UploadPhoto></UploadPhoto> -->
<div style="margin: 50px 0px; display: flex;">
<div style="margin-right: 10px; color: grey;">
<div>通过iframe、a标签实现文件下载功能</div>
<div>点击按钮下载 'QQ9.7.1.28934.exe' 文件</div>
</div>
<div>
<el-button type="primary" @click="loadFile">点击下载</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'App',
components: {
// Demo
},
data() {
},
created() {
//
},
methods: {
// iframe标签
loadFile() {
console.log("asda")
let url = 'https://dldir1.qq.com/qqfile/qq/PCQQ9.7.1/QQ9.7.1.28934.exe';
const iframe = document.createElement('iframe'); // 创建一个HTML 元素
iframe.style.display = 'none'; // 隐藏iframe 防止影响页面
iframe.style.height = 0; // 高度设置0 防止影响页面
iframe.src = url;// 下载链接
document.body.appendChild(iframe); // 这一行必须,iframe挂在到dom树上才会发请求 // 5分钟之后删除
setTimeout(() => {
iframe.remove(); }, 5 * 60 * 1000);
console.log("111asda")
},
// a标签
loadFile2() {
const a = document.createElement('a'); // 创建一个HTML 元素
let url = 'https://dldir1.qq.com/qqfile/qq/PCQQ9.7.1/QQ9.7.1.28934.exe';
a.setAttribute('download', ''); //download属性
a.setAttribute('href', url); // href链接
a.click(); // 自执行点击事件
}
}
}
</script>
<style>
.el-input {
width: 200px !important;
}
</style>