最近在做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(); //表单提交 }