关于javascript:普通下载-Vue文件图片下载处理

5次阅读

共计 1775 个字符,预计需要花费 5 分钟才能阅读完成。

个别的下载, 也就 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 文件图片下载解决

正文完
 0