美文网首页
云盘文件下载-js文件下载

云盘文件下载-js文件下载

作者: 刀鱼要到岛上掉 | 来源:发表于2020-07-20 10:27 被阅读0次

文件下载,会遇到三种格式的文件:file,blob,base64,而每种格式的文件,需要做的操作不尽相同,会带来很大困扰
如果上传的是blob或者base64的文件格式,想下载就需要先从url读取到文件内容。而js没有像php get_file_contents 一样的函数,可以选择用ajax去请求读取文件

    $.ajax({
            type:"GET",
            url:url,
            dataType: 'text',
            success: function(json){
               downloadFile(json, filename)  
            }
        });
/**
* content base64格式数据
* fileName 文件名
*/
function downloadFile(content, fileName) {
    

    let aLink = document.createElement('a');
    let blob = base64ToBlob(content); //new Blob([content]);
    let evt = document.createEvent("HTMLEvents");
    evt.initEvent("click", true, true); //initEvent 不加后两个参数在FF下会报错  事件类型,是否冒泡,是否阻止浏览器的默认行为
    aLink.download = fileName;
    aLink.href = URL.createObjectURL(blob);
    aLink.click();
};

如果直接是file格式的,可以尝试

function downByurl(url,fileName){
console.log(fileName)
  const ele = document.createElement('a');

  ele.setAttribute('href',url); //设置下载文件的url地址
  ele.setAttribute('target' , '_blank');
  ele.setAttribute('download' , fileName);//用于设置下载文件的文件名
  ele.download = fileName;

  ele.click();

}

下面也给出直接url下载blob格式的文件

function downloadWithBlob(url,filename) {
 fetch(url).then(res => res.blob().then(blob => {
  var a = document.createElement('a');
  var url = window.URL.createObjectURL(blob);
  a.href = url;
  a.download = filename;
  a.click();
  window.URL.revokeObjectURL(url);
 }));
}

到这里下载的部分也完成了

相关文章

网友评论

      本文标题:云盘文件下载-js文件下载

      本文链接:https://www.haomeiwen.com/subject/kprekktx.html