程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.net MVC 1.0 RTM中實現文件上傳

Asp.net MVC 1.0 RTM中實現文件上傳

編輯:關於ASP.NET

在我們開始之前,你需要知道一個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能幫到你.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved