MVC3如何用AJAX从服务器下载Excel文件?

MVC3如何用AJAX从服务器下载Excel文件?,第1张

对于这种方式实现下载,不是很熟悉,我说说我的看法,ajax的返回类型是什么?难道有文件类型?通常这种做法,我想应该是点击一个按钮直接执行下载,不需要使用ajax就能下载。你要知道,ajax的返回类型可没有文件类型,我通常的做法是返回json的数据类型,这种做法返回存放文件的path,前端处理下这个path就可以了!如果需要,明天上班给你详细举例说说!

Form里面有你很多的input

其实只要在你Form里面隐藏一个iframe

<iframe name="downloadFrame" style="display: none" frameborder="0"></iframe>

然后 提交表单 把target指向这个Iframe就行了

$("#formId").attr("action","下载的URL")

$("#formId").attr("target","downloadFrame")//iframe的名字

$("#formId").submit()

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。

Ajax 是一种用于创建快速动态网页的技术。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。[1]

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

该技术在 1998 年前后得到了应用。允许客户端脚本发送HTTP请求(XMLHTTP)的第一个组件由Outlook Web Access小组写成。该组件原属于微软 Exchange Server,并且迅速地成为了 Internet Explorer 4.0 的一部分。部分观察家认为,Outlook Web Access 是第一个应用了 Ajax 技术的成功的商业应用程序,并成为包括Oddpost 的网络邮件产品在内的许多产品的领头羊。但是,2005 年初,许多事件使得 Ajax 被大众所接受。Google 在它著名的交互应用程序中使用了异步通讯,如Google、Google 地图、Google 搜索建议、Gmail等。Ajax 这个词由《Ajax: A New Approach to Web Applications》[2]  一文所创,该文的迅速传播加强了人们使用该项技术的意识。另外,对Mozilla/Gecko 的支持使得该技术走向成熟,变得更为易用。

Ajax 前景非常乐观,可以提高系统性能,优化用户界面。Ajax 现有直接框架 AjaxPro,可以引入 AjaxPro.2.dll 文件,可以直接在前台页面 JavaScript 调用后台页面的方法。但此框架与表单验证有冲突。另外微软也引入了 Ajax 组件,需要添加 AjaxControlToolkit.dll 文件,可以在控件列表中出现相关控件。

HTTP File Server

http-file-server 是用 python 实现的 HTTP 文件服务器,支持上传和下载文件。

运行

$ python file-server.py files 8001

其中第一个参数 files 是存放文件的路径,第二个参数 8001 是 HTTP 服务器端口。

接口

1. 读取文件

GET /pathtofile/filename

2. 读取文件夹下所有文件(已经忽略隐藏文件)

GET /path

返回文件列表为 JSON 数组,文件名末尾带有 / 的表示是文件夹。 filename 为文件名,mtime 为修改时间。

[{"filename":"f1.txt","mtime":1001},{"filename":"p3/","mtime":1002}]

3. 上传文件

采用 POST 方式上传文件,URL 参数中传参数 name 表示上传的文件名,POST 内容为文件内容。

POST /upload?name=filename

ajax 示例:

// file is a FileReader object

var data = file.readAsArrayBuffer()

var xhr = new XMLHttpRequest()

var url = "http://localhost:8001/upload?name=xxx.md"

xhr.open("post", url, true)

xhr.setRequestHeader("Accept", "application/json, text/javascript, */*q=0.01")

xhr.onreadystatechange = function() {

if (xhr.readyState==4 &&xhr.status==200)

{

console.log(xhr.responseText)

}

}

xhr.send(data)

文件名 filename 可以包含相对路径。比如:upload?name=md/xxx.md。则上传至 md 目录下。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/418362.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-24
下一篇2023-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存