当前位置:编程学习 > ASP.NET> 正文

MVC上传文件的方法

时间:2014-3-23类别:编程学习

MVC上传文件的方法

MVC上传文件的方法

一、MVC中如何上传文件

 

1、在Web Forms中,当你把一个FileUpload控件拖到设计器中,你或许没有注意到在生成的HTML中会在form标签中加入一条额外属性enctype="multipart/form-data". 而FileUpload控件本身会生成为<input type=”file” />,在MVC的view里,下列HTML可以做到同样效果

  •  
  • HTML 代码   复制
  • 
    <form action="/" method="post" enctype="multipart/form-data">
      <input type="file" name="FileUpload1" /><br />
      <input type="submit" name="Submit" id="Submit" value="Upload" />
    </form>
    
    		
  •  

    注意form标签已经包括了enctype标签,而method属性则设为”post”,这样设置并不多于因为默认的提交时通过HTTP get方式进行

     

    2、在Asp.net MVC中Controller类中,Request对象作为HttpRequestBase类型的一个属性存在。HttpReuqestBase其实是HTTP请求的一个封装,暴漏了很多属性,包括Files collection(其实是HttpFileCollectionBase的集合),在集合中的每一个元素都是HttpPostedFileBase的集合,扩展方法是用于确保上传的文件是否存在。实际上,这和FileUpload.HasFile()方法的工作原理一致。

     

    二、MVC上传文件的实例:

     

    1、视图文件

    前台引擎采用Razor

    上传页View:

  •  
  • C# 代码   复制
  • 
    @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" />
    }
    
    		
  •  

    2、后台UploadFileController

  •  
  • C# 代码   复制
  • 
          [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
               HttpPostedFileBase file = Request.Files[0];
              //保存成自己的文件全路径,newfile就是你上传后保存的文件,
              //服务器上的UpLoadFile文件夹必须有读写权限      
               file.SaveAs(Server.MapPath(@"UploadFile\\newfile"));
              }
    
              newFile = DateTime.Now.ToString("yyyyMMddHHmmss") + ".sl";
                
                return View();
    
           }
    
    		
  •  

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐