.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"));
    }
}

 

效果: