博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
下载文件实现的常见方式
阅读量:4316 次
发布时间:2019-06-06

本文共 2737 字,大约阅读时间需要 9 分钟。

  下载json、csv、excel、img等文件,而不是直接在浏览器打开,在后台管理系统中很常见。那么都有哪些方式可以实现呢?

  方式一:链接,参数不多

        1. a标签,直接实现

// href 放下载地址; // download 为空,默认是下载地址上的文件名称,可以指定名称,如tp.csv,加download是避免json、img等文件直接在浏览器打开而不是下载;// target="_black"在新页面打开,避免当前页闪屏点击下载// 如需带参,直接在地址后加上url的search参数就可以,注意参数不要太多点击下载

  2. window.open,location.href,借助js,点击按钮,调用方法实现

function downloadFile(url){    window.open(url);}function downloadFile(url){    location.href=url;}

  方式二:iframe

// jsfunction downloadFile(url){    var iframe = document.createElement("iframe");      document.body.appendChild(iframe);      iframe.src =url;}// jqfunction downloadFile(url){     $("body").append($("").attr("src",url);}

  方式三:form表单,参数较多

  1. form表单,不带参

function downloadFile (){      var url = "";      var form = $("
").attr({ action : url, method : "post" }); form.appendTo($("body")).submit(); form.remove(); }

  2. form表单,带参,jq

function downloadFile (data, url) {      // data格式      // obj {key: val}      // obj {key: [val]}      // obj {key: {key1: val}}      var dataHtml='';      for(var i in data){        var item=data[i];        var type=typeof item;        switch(type){          case 'object':            if($.isArray(item)){              for(var k=0,klen=item.length; k
'+dataHtml+''); }else{ exportForm.html(dataHtml); } $("#export_form").submit(); $('#export_form').remove(); function createInput(name,data){ return '
' } }

  3. form 表单,带参,vue,element-ui

// 组件 download.vue
// 调用

   方式四:前端组织内容,csv方式下载

  参考:https://blog.csdn.net/oscar999/article/details/16342699

  前面三种方式都是通过前端请求后端接口实现下载,但有时需要前端直接组织内容下载。

var dataStr = "col1,col2,col3\nhello,world,english";    var dataChineseStr = "姓名,年龄!\n张三,34\n王五,32\n李四,25";    console.log()    // chrome    if (navigator.appName == "Netscape") {      var blob = new Blob([dataStr], {type: "text/csv,charset=utf-8"});      document.getElementById("btn").href = window.URL.createObjectURL(blob);      var blobChinese = new Blob(['\ufeff'+dataChineseStr], {type: "text/csv,charset=utf-8"});      document.getElementById("btn_chinese").href = window.URL.createObjectURL(blobChinese);    } else {      document.getElementById("btn").href = "data:text/csv;charset=utf-8," + encodeURIComponent(dataStr);      document.getElementById("btn_chinese").href = "data:text/csv;charset=utf-8,\ufeff" + encodeURIComponent(dataStr);    }

 

转载于:https://www.cnblogs.com/EnSnail/p/9018946.html

你可能感兴趣的文章
[CF808A] Lucky Year(规律)
查看>>
关于推送遇到的一些问题
查看>>
寒假作业3 抓老鼠啊~亏了还是赚了?
查看>>
Orcal Job创建实例
查看>>
Django
查看>>
批量Excel数据导入Oracle数据库(引用 自 wuhuacong(伍华聪)的专栏)
查看>>
处理移动障碍
查看>>
优化VR体验的7个建议
查看>>
2015年创业中遇到的技术问题:21-30
查看>>
《社交红利》读书总结--如何从微信微博QQ空间等社交网络带走海量用户、流量与收入...
查看>>
JDK工具(一)–Java编译器javac
查看>>
深入.NET框架与面向对象的回顾
查看>>
merge http://www.cplusplus.com/reference/algorithm/merge/
查看>>
Python-DB接口规范
查看>>
改变label中的某字体颜色
查看>>
[转]SQL SERVER 的排序规则
查看>>
SQLServer锁原理和锁的类型
查看>>
Eclipse中SVN的安装步骤(两种)和使用方法[转载]
查看>>
C语言函数的可变参数列表
查看>>
七牛云存储之应用视频上传系统开心得
查看>>