MVC3中如何实现文件下载?

OnlyAndy 2012-04-18 11:02:58
如题,点击按钮就下载一个文件。跪求指教
建库建表建视图模型的就不必了,来个简单点的例子就行了
...全文
1980 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chjiamin 2013-12-17
  • 打赏
  • 举报
回复
搞的这么麻烦,MVC很简单的啊。 [HttpGet] public FilePathResult GetFile(){ return File(。。。。。。); }
xh91900 2013-10-23
  • 打赏
  • 举报
回复
求大神救命,怎么让用户自己选择保存的路径呢?
fy_zhu93 2013-07-11
  • 打赏
  • 举报
回复
引用
public ActionResult File(){ string fileName = "QQ五笔.exe";//客户端保存的文件名 string filePath = Server.MapPath("../../DownLoad/QQWubi_Setup.exe");//路径 FileStream fs = new FileStream(filePath, FileMode.Open); byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); Response.Charset = "UTF-8"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename="+ fileName); Response.BinaryWrite(bytes); Response.Flush(); Response.End(); return new EmptyResult(); }
在文件比较大的时候,比如200M 500M,或者更大的时候怎么处理
「已注销」 2013-07-07
  • 打赏
  • 举报
回复
文件上下载,收藏。
坐看昀起 2013-05-21
  • 打赏
  • 举报
回复
引用 9 楼 wangbaogang 的回复:
现在文件名乱码

public ActionResult DownLoad()
        {
            //插件名称
            string fileName = "虎视视频控件_Setup(v2.6.0.0).exe";
            //文件路径
            string filePath = Server.MapPath("../Video/虎视视频控件_Setup(v2.6.0.0).exe");
            FileStream fs = new FileStream(filePath,FileMode.Open);
            byte[] bytes = new byte[(int)fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            fs.Close();
            Response.Charset = "UTF-8";
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            Response.ContentType = "application/octet-stream";
//解决文件名乱码问题            
Response.AddHeader("Content-Disposition","attachment;filename="+Server.UrlEncode(fileName));
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
            return new EmptyResult();
        }
wangbaogang 2012-09-01
  • 打赏
  • 举报
回复
现在文件名乱码
oShiHuai123456 2012-08-30
  • 打赏
  • 举报
回复
为啥我用了以后没有效果呢
var newPath = this.Server.MapPath(filePath);
FileStream fs = new FileStream(newPath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/octet-stream";

Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
return new EmptyResult();
zgjsczwj 2012-08-01
  • 打赏
  • 举报
回复
怎么解决的?我现在也是这个情况
OnlyAndy 2012-04-20
  • 打赏
  • 举报
回复
问题已解决,谢谢!
骑猪看海 2012-04-20
  • 打赏
  • 举报
回复
public ActionResult File(){
string fileName = "QQ五笔.exe";//客户端保存的文件名
string filePath = Server.MapPath("../../DownLoad/QQWubi_Setup.exe");//路径

FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/octet-stream";

Response.AddHeader("Content-Disposition", "attachment; filename="+ fileName);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
return new EmptyResult();
}
OnlyAndy 2012-04-18
  • 打赏
  • 举报
回复
这个太复杂了点,有没有更简单的?直接给我后台控制器和前台View的代码就好
SomethingJack 2012-04-18
  • 打赏
  • 举报
回复
OnlyAndy 2012-04-18
  • 打赏
  • 举报
回复
public void XiaZai(object sender, EventArgs e)
{
string fileName = "QQ五笔.exe";//客户端保存的文件名
string filePath = Server.MapPath("../../DownLoad/QQWubi_Setup.exe");//路径

FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/octet-stream";

Response.AddHeader("Content-Disposition", "attachment; filename="+ fileName);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}

这是我在控制器里的Action,可以读到那个文件,但就是不弹出下载框,运行完就没反应了。我哪里写错了?
骑猪看海 2012-04-18
  • 打赏
  • 举报
回复
你在webform中怎么做的,MVC里也一样

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧