.NET MVC下简单的文件下载思路。
web前端通过模拟form表单提交参数,C#后端获取参数后,生产(读取)文件,返回给浏览器。
前端代码:
注意:需要引入jQuery。
<script> //文件下载 //上传参数例子[{key:1,value:123},{key:2,value:456}] var formSubmit = function (url, target,/*上传参数*/param) { var form = $("<form>");//定义form表单,通过表单发送请求 form.attr("style", "display:none");//设置为不显示 form.attr("target", target); form.attr("method", "post");//设置请求类型 form.attr("action", url);//设置请求路径 // 创建Input if (param.constructor == Array) { for (index in param) { var item = param[index]; if (item["key"] && item["value"]) { var ele = $('<input type="text" name="' + item["key"] + '" />'); ele.attr('value', item["value"]); form.append(ele); } } } $("body").append(form);//添加表单到页面(body)中 form.submit();//表单提交 } $(function () { $("#btn").click(function () { //上传参数 var param = [ { key: "param1", value: "web端上传的参数1" }, { key: "param2", value: "文件" } ]; formSubmit('/FileExport/Export', '', param); }); }); </script> <style> #btn{ border:1px solid #b5a9a9; background-color:#ccc; width:60px; padding:3px 5px; margin:10px; text-align:center; cursor:pointer } </style> <div id="btn">导出</div>
后端代码:
public class FileExportController : Controller { // GET: FileExport public ActionResult Index() { return View(); } /// <summary> /// 导出操作 /// </summary> /// <returns></returns> public ActionResult Export(string param1,string param2) { /* * 功能:生成一个XML文档,并将它响应给浏览器 * 步骤: * 1 创建一个XML文档实例 * 1.1 添加XML文档声明 * 1.2 添加一个XML元素 * 2 将XML文档写入内存流 * 3 将内存流的数据转成字节数组 * 4 返回给浏览器 */ XmlDocument xml = new XmlDocument(); var head = xml.CreateXmlDeclaration("1.0", "UTF-8", null); xml.AppendChild(head); var node = xml.CreateElement("text"); node.InnerText = param1; xml.AppendChild(node); MemoryStream ms = new MemoryStream(); xml.Save(ms); byte[] buf = ms.ToArray(); return File(buf, "text/xml", Server.UrlPathEncode(param2+".xml")); } }
效果:
