zoukankan      html  css  js  c++  java
  • Asp.net MVC 1.0 RTM中实现文件上传

    Asp.net MVC 1.0 RTM中实现文件上传

    在我们开始之前,你需要知道一个form以post方式上传文件的方式,你将要增加一个特别的enctype attribute到form标签上,为了这个么,我们需要创建一个像这样的form标签:

    1. <% using (Html.BeginForm("Edit""Person", FormMethod.Post, new { enctype = "multipart/form-data" })) {%>  

    然后我们只需要增加一个Type为"file"的input,一个sumbit按钮的表单.你必须确保input上有"name" attribute.我们也能任何一个我们想要的form上:

    1. <table>  
    2.     <tr>  
    3.         <td><input type="file" id="picture" name="picture" /></td>  
    4.     </tr>  
    5.     <tr>  
    6.         <td><input type="submit" value="Upload" /></td>  
    7.     </tr>  
    8. </table>  

    现在我们自己的表单了,准备好服务器端的Action.我们这么做:

    1. [AcceptVerbs(HttpVerbs.Post)]   
    2. public ActionResult Edit(HttpPostedFileBase picture)   
    3. {   
    4.     if (picture != null)   
    5.     {   
    6.         picture.SaveAs("C:\wherever\" + picture.FileName);   
    7.     }   
    8. }  

    漂亮吧!现在只剩下测试它了.我使用了Moq 3,我们只需要mock出一个文件,并放入方法中:

    1. var personPicture = new Mock<HttpPostedFileBase>();   
    2. personPicture.Setup(i => i.FileName).Returns("person.jpg");   
    3. personPicture.Setup(i => i.InputStream).Returns(new MemoryStream(Encoding.UTF8.GetBytes("")));   
    4.   
    5. var controller = new PersonController();   
    6. controller.Edit(personPicture.Object);   
    7.   
    8. personPicture.Verify(p => p.SaveAs("C:\wherever\person.jpg");  

    哇.所有能mock出所有我们有的东西,假装控制器中少许属性,调用方法,然后验证图片上适当的方法是否被调用.就是那么简单!

    希望你已知道这些,但如果你不知,希望这篇post能帮到你.

    翻译:PetterLiu  http://www.cnblogs.com/wintersun     Source

  • 相关阅读:
    LinkedList源码解析
    HashMap源码解析
    HashMap和Hashtable区别
    arcgis api for js 之网络分析服务发布
    arcgis api for js 之发布要素服务
    arcis api for js 值 3.17 本地部署
    ArcGIS 产品体系结构
    layui select下拉框选项不显示
    windows10企业版2016长期服务版激活
    PHP常见的输出语句
  • 原文地址:https://www.cnblogs.com/wintersun/p/1433828.html
Copyright © 2011-2022 走看看