码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET MVC 文件上传和文件下载

时间:2017-01-24 10:59:16      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:file   mode   png   文件名   nbsp   har   length   att   ack   

1、序言

最近项目中需要用到这个功能点,但是网上下载的时候总是出现乱码。所以趁着这个时间自己整理出了一份,以后需要的时候就直接看自己的博客就行了。已经测试过:在谷歌、火狐、IE等浏览器上都不会出现乱码问题。

2、结果展示

2.1、上传文件成功界面

 技术分享

2.2、下载文件成功界面

技术分享

3、上传文件代码

3.1、View代码

@model System.Web.HttpContextBase
@{
    ViewBag.Title = "上传文件";
}
<h2>上传文件</h2>
<br />
<br />
@*new { enctype = "multipart/form-data" }比不可少,否则上传文件不会成功 *@
@using (Html.BeginForm("Upload", "UploadFile", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <text>选择上传文件:</text><input name="file" type="file" id="file" />
    <br />
    <br />
    <input type="submit" name="Upload" value="Upload" />
}

3.2、Controller代码

[HttpPost]
        public ActionResult Upload(FormCollection form)
        {
            if (Request.Files.Count == 0){
                //Request.Files.Count 文件数为0上传不成功
                return View();
            }
            var file = Request.Files[0];
            if (file.ContentLength == 0){
                //文件大小大(以字节为单位)为0时,做一些操作
                return View();
            }
            else{
                //文件大小不为0
                file = Request.Files[0];
                //保存成自己的文件全路径,newfile就是你上传后保存的文件,
                //服务器上的UpLoadFile文件夹必须有读写权限
                string target = Server.MapPath("/")+("/Mock/Learning/");//取得目标文件夹的路径
                string filename = file.FileName;//取得文件名字
                string path = target + filename;//获取存储的目标地址
                file.SaveAs(path);}
            return View();
        }

 

4、下载文件代码

4.1、View代码

<a href="/DownloadFile/Download?filePath=@ViewBag.Value&fileName=‘小王子.pdf‘">下载</a>

4.2、Controller代码

public ActionResult Download(string filePath, string fileName)
        {
            Encoding encoding;
            string outputFileName = null;
            fileName = fileName.Replace("", "");
            
            string browser =Request.UserAgent.ToUpper();
            if (browser.Contains("MS") == true && browser.Contains("IE") == true)
            {
                outputFileName = HttpUtility.UrlEncode(fileName);
                encoding =Encoding.Default;
            }
            else if (browser.Contains("FIREFOX") == true)
            {
                outputFileName = fileName;
                encoding =Encoding.GetEncoding("GB2312");
            }
            else
            {
                outputFileName = HttpUtility.UrlEncode(fileName);
                encoding = Encoding.Default;
            }
            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.ContentType = "application/octet-stream";
            Response.ContentEncoding = encoding;
            Response.AddHeader("Content-Disposition", "attachment; filename=" + outputFileName);
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
            return new EmptyResult();
        }

 

ASP.NET MVC 文件上传和文件下载

标签:file   mode   png   文件名   nbsp   har   length   att   ack   

原文地址:http://www.cnblogs.com/leijing0607/p/6346520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!