生活随笔
收集整理的這篇文章主要介紹了
Asp.net MVC 1.0 RTM中实现文件上传
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Asp.net MVC 1.0 RTM中實現文件上傳
在我們開始之前,你需要知道一個form以post方式上傳文件的方式,你將要增加一個特別的enctype attribute到form標簽上,為了這個么,我們需要創建一個像這樣的form標簽:
<%?using?(Html.BeginForm("Edit",?"Person",?FormMethod.Post,?new?{?enctype?=?"multipart/form-data"?}))?{%>?? <% 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>?? <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); ?? ????} ?? }?? [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");?? 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能幫到你.
翻譯:PetterLiu? http://www.cnblogs.com/wintersun???? Source
總結
以上是生活随笔為你收集整理的Asp.net MVC 1.0 RTM中实现文件上传的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。