如何实现下载文件

        最近在做ITOO.net的考试系统,题库部分涉及到下载模板,但是在写完代码之后发现不出现下载的页面,所以顺

便总结了一下。

        文件下载的controller代码一共分为以下几种方式:

       

        一、文件路径+MIME类型

      

public ActionResult FilePathDownload1()
{
    var path = Server.MapPath("~/Files/鹤冲天.zip");
    return File(path, "application/x-zip-compressed");
}

        只需要知道文件的下载路径和指定文件的MIME类型,就可以下载指定路径下的文件了。


        二、文件路径+MIME类型+文件名称

public ActionResult FilePathDownload3()
{
    var path = Server.MapPath("~/Files/鹤冲天.zip"); 
    var name = Path.GetFileName(path);
    return File(path, "application/x-zip-compressed", name);
}
      

       跟上边方法不同的是,这个除了知道文件路径和MIME类型外,还需要知道文件的名称。


       三、对fileDownloadName进行URL编码


public ActionResult FilePathDownload4()
{
    var path = Server.MapPath("~/Files/鹤冲天.zip");
    var name = Path.GetFileName(path);
    return File(path, "application/x-zip-compressed", Url.Encode(name));
}
      

       如果想指定文件格式可以使用这种办法。


       再看javascript的代码,应该用什么办法传文件属性呢?

        function downTemplate() {
            //获取选中表格的信息
            var row = $('#tt').datagrid('getSelected');
            if (row) {
                var PaperID = row.PaperID; 
                var PaperName = row.PaperName;
            }

            var form = $("<form>"); //定义一个form表单
            form.attr('style', 'display:none'); //在form表单中添加查询参数
            form.attr('method', 'post'); //设置或返回将数据发送到服务器的HTTP方法
            form.attr('action', "downTemplate");

            var input1 = $('<input>');
            input1.attr('type', 'hidden');
            input1.attr('name', 'PaperName');
            input1.attr('value', PaperName);

            $('body').append(form);  //将表单放置在web中
            form.append(input1);   //将查询参数控件提交到表单上
            form.submit(); //表单提交
}

          到这里,大家可以思考一下,为什么在javascript里要用表单提交,而不是用ajax传值呢?可以在评论里回复哦~


你可能感兴趣的:(如何实现下载文件)