个别的下载, 也就 a 标签加个链接地址, 标签内加个 download 属性. 当地址是后端提供时: 可通过创立 a 标签, 随即给 a 便签附下载链接, 文件名和属性, 最初再创立点击成果, 最初分明生成的 a 标签. 再则是图片地址提供: 能够通过 Base64 加 canvas, 对图片的下载能够进行解决. 上面就是相干办法处理函数 HTML 与文件下载
HTML 与文件下载
<a href="large.jpg" download> 下载 </a>
文件下载配合后端表格导出
export function downloadFile(url, filename) {
// 创立暗藏的可下载链接
let link = document.createElement('a');
link.href = url;
link.download = filename;
link.target = '_blank';
link.style.display = 'none';
document.body.appendChild(link);
// 触发点击
link.click();
// 而后移除
document.body.removeChild(link);
link = null;
}
加参数:
export function generateQS(baseurl, paramObj) {
let returnUrl = baseurl + '?'
for (const key in paramObj) {// Object.hasOwnProperty(prop) 用来判断对象是否含有指定属性
// 返回值 boolean
if (paramObj.hasOwnProperty(key)) {const element = paramObj[key];
returnUrl += key + '=' + element + '&';
}
}
return returnUrl;
}
借助 HTML5 Blob 实现文本信息文件下载
const funDownload = function (content, filename) {
// 创立暗藏的可下载链接
let eleLink = document.createElement('a');
eleLink.download = filename;
eleLink.style.display = 'none';
// 字符内容转变成 blob 地址
let blob = new Blob([content]);
eleLink.href = URL.createObjectURL(blob);
// 触发点击
document.body.appendChild(eleLink);
eleLink.click();
// 而后移除
document.body.removeChild(eleLink);
};
借助 Base64 实现任意文件下载
let funDownload = function (domImg, filename) {
// 创立暗藏的可下载链接
let eleLink = document.createElement('a');
eleLink.download = filename;
eleLink.style.display = 'none';
// 图片转 base64 地址
let canvas = document.createElement('canvas');
let context = canvas.getContext('2d');
let width = domImg.naturalWidth;
let height = domImg.naturalHeight;
context.drawImage(domImg, 0, 0);
// 如果是 PNG 图片,则 canvas.toDataURL('image/png')
eleLink.href = canvas.toDataURL('image/jpeg');
// 触发点击
document.body.appendChild(eleLink);
eleLink.click();
// 而后移除
document.body.removeChild(eleLink);
};
结束语
在 Chrome 浏览器下,模仿点击创立的 a 元素即便不 append 到页面中,也是能够触发下载的,然而在 Firefox 浏览器中却不行,因而,下面的 funDownload() 办法有一个 appendChild 和 removeChild 的解决,就是为了兼容 Firefox 浏览器。
一般下载 && Vue 文件图片下载解决