前台实现下载xml功能
介绍问题
平时我们通过href去链接文件时,一般情况是对于zip、jar等下载功能,而对于xml、css、html、js等都是查看功能。
现在下面的代码可以直接生成xml格式的字符串,从而达到生成xml文件,以至于可以下载xml文件。
其中主要的代码:data:text/xml;charset=utf-8 ,其实这是content-Type,也就是下面会提到的MIME TYPE(在《http权威指南》一书中曾经提到过)
MIME TYPE
因特网上有数千种不同的数据类型,HTTP 仔细地给每种要通过 Web 传输的对象都打上了名为 MIME 类型(MIME type)的数据格式标签。最初设计 MIME (Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同 的电子邮件系统之间搬移报文时存在的问题。MIME 在电子邮件系统中工作得非常好,因此 HTTP 也采纳了它,用它来描述并标记多媒体内容。
Web 服务器会为所有 HTTP 对象数据附加一个 MIME 类型(参见下图)。当 Web 浏览器从服务器中取回一个对象时,会去查看相关的 MIME 类型,看看它是否知道 应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图 片文件、解析并格式化 HTML 文件、通过计算机声卡播放音频文件,或者运行外部 插件软件来处理特殊格式的数据。

MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间
由一条斜杠来分隔。
HTML 格式的文本文档由 text/html 类型来标记。
普通的 ASCII 文本文档由 text/plain 类型来标记。
JPEG 格式的图片为 image/jpeg 类型。
GIF 格式的图片为 image/gif 类型。
Apple 的 QuickTime 电影为 video/quicktime 类型。
微软的 PowerPoint 演示文件为 application/vnd.ms-powerpoint 类型。
常见的 MIME 类型有数百个,实验性或用途有限的 MIME 类型则更多。这儿提 供了一个非常完整的 MIME 类型列表。
解决问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
window.onload = function () {
var html = '<a href="data:text/xml;charset=utf-8,' + encodeURIComponent(text) + '" download="99">下载</a>';
document.body.innerHTML = html;
}
var text = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\
<config-routing>\
<array name="Private">\
<key name="amount">3</key>\
<array name="info">\
<key name="name">阿斯顿</key>\
<key name="id">1</key>\
</array>\
<array name="info">\
<key name="name">阿斯顿</key>\
<key name="ecu_id">2</key>\
</array>\
<array name="info">\
<key name="name">3we</key>\
<key name="id">3</key>\
</array>\
</array>\
</config_routing>';
</script>
</html>
Live Demo:https://wanliyuan.github.io/module/test/downloadXml.html
源代码:https://github.com/wanliyuan/module/blob/gh-pages/test/downloadXml.html
这样就不用传数据给后台,然后由后台去组合xml,再来去下载xml,效率高了些。
前台实现下载xml功能的更多相关文章
- 项目笔记:导出XML和导出全部XML功能
前台代码: //导出一条Xml function btn_createXml(){ var title =$("#editButton").attr("title&quo ...
- 下载Xml文件方法
#region 下载Xml文件方法 //定义委托 private delegate void DownLoadDelegate(string url, string filename); privat ...
- php 生成和下载xml文件
方法一 $doc = new DOMDocument('1.0', 'utf-8'); $doc->formatOutput = true; $rootEle = $doc->create ...
- 安天透过北美DDoS事件解读IoT设备安全——Mirai的主要感染对象是linux物联网设备,包括:路由器、网络摄像头、DVR设备,入侵主要通过telnet端口进行流行密码档暴力破解,或默认密码登陆,下载DDoS功能的bot,运行控制物联网设备
安天透过北美DDoS事件解读IoT设备安全 安天安全研究与应急处理中心(安天CERT)在北京时间10月22日下午启动高等级分析流程,针对美国东海岸DNS服务商Dyn遭遇DDoS攻击事件进行了跟进分析. ...
- 在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all
在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all 前天来了个新需求, 有一个授权书的文件要点击下载, 需要在前端生成, ...
- meteor---在合并打包多个文件ZIP下载的功能
实现多个文件边打包边下载的功能,速度还可以,本人亲测,欢迎大家来指点archiver --用NPM安装这个模块---本人文件存储在file-collection 中,可以用fs : fs.create ...
- springboot项目下载文件功能中-切面-导致的下载文件失败的bug
背景:使用spring提供的 ResponseEntity 和Resource结合,实现的下载文件功能 bug:Resource已经加载到了文件, 并且通过 ResponseEntity 构建了响应, ...
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...
- 实现android支持多线程断点续传下载器功能
多线程断点下载流程图: 多线程断点续传下载原理介绍: 在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度手机端下载数据时难免会出现无信号断线.电量不足等情况,所以需要断点续传功能根据下 ...
随机推荐
- hdu 4462(状态压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4462 思路:由于数据不大,可以直接将所有的状态表示出来,然后枚举,判断能否将方格全部覆盖. http: ...
- shell基础(一)
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释 ...
- 【hdu1573-X问题】拓展欧几里得-同余方程组
http://acm.hdu.edu.cn/showproblem.php?pid=1573 求小于等于N的正整数中有多少个X满足: X mod a0 = b0 X mod a1 = b1 …… X ...
- 解决安装rpm时lib冲突:libstdc++-2-libc6.1-1-2.9.0.so from install of compat-libstdc++-7.3-2.96.118 conflicts with file from ...
sudo rpm -ivh xxx.rpm -aid --force [oracle@localhost Oracle]$ .i386.rpm compat-libstdc++-devel-.i386 ...
- C语言学习资料(转载)
◆经典C源程序100例:http://post.baidu.com/f?kz=8618367 ◆时钟的驻留程序:http://post.baidu.com/f?kz=10822377 ◆数据结构暨若干 ...
- Linux系统调用--getrlimit()与setrlimit()函数详解
http://www.cnblogs.com/niocai/archive/2012/04/01/2428128.html 功能描述:获取或设定资源使用限制.每种资源都有相关的软硬限制,软限制是内核强 ...
- 老是出现dispolse 找不到合适的方法来重写
复制到输出目录:不复制 生成操作:编译
- Java:网络编程之UDP的使用
java.net 类 DatagramSocket 此类表示用来发送和接收数据报包的套接字,数据报套接字是包投递服务的发送或接收点. java.net 类 DatagramPacket 此类表示数 ...
- Java:包的使用Pack
在包A中创建一个类并在类中定义一个方法 package packA; public class PackDemoA { public void show() { System.out.println( ...
- Android 等比例缩放图片
// 缩放图片 public static Bitmap zoomImg(String img, int newWidth ,int newHeight){ // 图片源 Bitmap bm = Bi ...