Asp.net MVC 1.0 RTM中实现文件上传
在我们开始之前,你需要知道一个form以post方式上传文件的方式,你将要增加一个特别的enctype attribute到form标签上,为了这个么,我们需要创建一个像这样的form标签: <% using (Html.BeginForm("Edit", "Person", FormMethod.Post, new { enctype = "multipart/form-data" })) {%> 然后我们只需要增加一个Type为"file"的input,一个sumbit按钮的表单.你必须确保input上有"name" attribute.我们也能任何一个我们想要的form上: <table> <tr> <td><input type="file" id="picture" name="picture" /></td> </tr> <tr> <td><input type="submit" value="Upload" /></td> </tr> </table> 现在我们自己的表单了,准备好服务器端的Action.我们这么做: [AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(HttpPostedFileBase picture) { if (picture != null) { picture.SaveAs("C:\wherever\" + picture.FileName); } } 漂亮吧!现在只剩下测试它了.我使用了Moq 3,我们只需要mock出一个文件,并放入方法中: var personPicture = new Mock<HttpPostedFileBase>(); personPicture.Setup(i => i.FileName).Returns("person.jpg"); personPicture.Setup(i => i.InputStream).Returns(new MemoryStream(Encoding.UTF8.GetBytes(""))); var controller = new PersonController(); controller.Edit(personPicture.Object); personPicture.Verify(p => p.SaveAs("C:\wherever\person.jpg"); 哇.所有能mock出所有我们有的东西,假装控制器中少许属性,调用方法,然后验证图片上适当的方法是否被调用.就是那么简单! 希望你已知道这些,但如果你不知,希望这篇post能帮到你. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |