如何实现下载文件
2016-06-12 21:42
225 查看
最近在做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传值呢?可以在评论里回复哦~
便总结了一下。
文件下载的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传值呢?可以在评论里回复哦~
相关文章推荐
- 结构体字节对齐问题
- NSTimer知多少
- CreatCompatibleDC
- route 认识
- JPA入门
- [转]关于胖客户端和瘦客户端的理解
- Android之Timer和TimerTask的介绍
- Android初级教程之内容提供者获取联系人信息
- Android初级教程之内容提供者获取联系人信息
- 数据库知识整理<三>
- QSlider解决点击不能到该位置问题
- python虚拟环境的使用
- Java 数值溢出
- PHP面试题之字符串反转
- JavaScript BOM中的setInterval
- 解决opengl加载3ds模型只有一张贴图的办法!!!!
- git branch操作
- 推荐参考vim配置文件-c/c++
- 匈牙利算法和hopcroft_karp算法模板
- setCentralWidget就可以把Qwidget设置为QMainWindow的主窗口