介绍问题

  平时我们通过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,效率高了些。

  参考文章:Web 端 js 导出csv文件(使用a标签)

前台实现下载xml功能的更多相关文章

  1. 项目笔记:导出XML和导出全部XML功能

    前台代码: //导出一条Xml function btn_createXml(){ var title =$("#editButton").attr("title&quo ...

  2. 下载Xml文件方法

    #region 下载Xml文件方法 //定义委托 private delegate void DownLoadDelegate(string url, string filename); privat ...

  3. php 生成和下载xml文件

    方法一 $doc = new DOMDocument('1.0', 'utf-8'); $doc->formatOutput = true; $rootEle = $doc->create ...

  4. 安天透过北美DDoS事件解读IoT设备安全——Mirai的主要感染对象是linux物联网设备,包括:路由器、网络摄像头、DVR设备,入侵主要通过telnet端口进行流行密码档暴力破解,或默认密码登陆,下载DDoS功能的bot,运行控制物联网设备

    安天透过北美DDoS事件解读IoT设备安全 安天安全研究与应急处理中心(安天CERT)在北京时间10月22日下午启动高等级分析流程,针对美国东海岸DNS服务商Dyn遭遇DDoS攻击事件进行了跟进分析. ...

  5. 在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all

    在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all 前天来了个新需求, 有一个授权书的文件要点击下载, 需要在前端生成, ...

  6. meteor---在合并打包多个文件ZIP下载的功能

    实现多个文件边打包边下载的功能,速度还可以,本人亲测,欢迎大家来指点archiver --用NPM安装这个模块---本人文件存储在file-collection 中,可以用fs : fs.create ...

  7. springboot项目下载文件功能中-切面-导致的下载文件失败的bug

    背景:使用spring提供的 ResponseEntity 和Resource结合,实现的下载文件功能 bug:Resource已经加载到了文件, 并且通过 ResponseEntity 构建了响应, ...

  8. C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库

    using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  9. 实现android支持多线程断点续传下载器功能

    多线程断点下载流程图: 多线程断点续传下载原理介绍: 在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度手机端下载数据时难免会出现无信号断线.电量不足等情况,所以需要断点续传功能根据下 ...

随机推荐

  1. android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)

    android模拟器(genymotion)+appium+python 框架执行的基本过程: 1.Push.initDate(openid)方法     //业务数据初始化 1.1   v5db.p ...

  2. select into from和insert into select from两种表复制语句区别

    select into from和insert into select from两种表复制语句都是将源表source_table的记录插入到目标表target_table,但两句又有区别. 第一句(s ...

  3. MongoDB (十一) MongoDB 排序文档

    sort() 方法 要在 MongoDB 中的文档进行排序,需要使用sort()方法. sort() 方法接受一个文档,其中包含的字段列表连同他们的排序顺序.要指定排序顺序1和-1. 1用于升序排列, ...

  4. CentOS 配置vncserver

    一.安装 以root用户运行以下命令来安装vncserver; yum install tigervnc-server 同样运行以下命令来安装vncviewer; yum install vnc 停止 ...

  5. React组件-mixin

    一.组件 二.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&q ...

  6. E时代主机,其实做一个小虚拟主机还是不错的

    http://www.idcen.com/ 做微信没有网上测试地址,找了一下发现以前用过的.记录一下.一个100m的虚拟主机需要三四十块钱,做微信,做一个小型网站还是够用的,就是mysql有点问题,不 ...

  7. #-webkit-autofill##google#启用表单自动填充时,如何覆盖黄色背景

    google和opera浏览器的表单自动填充后,输入框均会变成黄色背景,黑色字体.如下图. 这样的话会与网页的整体设计风格不一致,怎样自定义样式,来覆盖黄色背景. 首先来看看是什么导致的,右键查看元素 ...

  8. DB2时间操作

    以下内容选编自<DB2 基础: 日期和时间的使用> 1.使用SQL获取数据库服务器当前时间戳 SELECT current date FROM sysibm.sysdummy1 SELEC ...

  9. 300. Longest Increasing Subsequence

    题目: Given an unsorted array of integers, find the length of longest increasing subsequence. For exam ...

  10. 284. Peeking Iterator

    题目: Given an Iterator class interface with methods: next() and hasNext(), design and implement a Pee ...