在研究HttpRequest的時候,搞文件上傳的時候,經常碰到返回HttpPostedFile對象的情況,這個對象才是真正包含文件內容的東西。
經常要獲取的最重要的內容是FileName屬性與SavaAs方法,現在我們來詳細看看這個東西。
一、常用屬性
- ContentLength: 獲取上載文件的大小(以字節為單位)。返回一個數字。
- ContentType:獲取客戶端發送的文件的 MIME 內容類型。
- FileName: 獲取客戶端上的文件的完全限定名稱。
- InputStream:獲取一個 Stream 對象,該對象指向一個上載文件,以准備讀取該文件的內容。
二、常用方法
- SaveAs 保存上載文件的內容。 可以服務器物理路徑作為參數。
代碼示例:
注意表單要加上enctype = "multipart/form-data",后台FileCollect.Count才不會為0。如:
<form action="/Home/GetForm" method="post" enctype="multipart/form-data"> <p><input type="file" name="file1" value="" /></p> <p><input type="file" name="file2" value="" /></p> <p><input type="submit" value="提交" /></p> </form>
后台代碼:
public ActionResult GetForm() { HttpRequest request = System.Web.HttpContext.Current.Request; HttpFileCollection FileCollect = request.Files; if (FileCollect.Count > 0) //如果集合的數量大於0 { foreach (string str in FileCollect) { HttpPostedFile FileSave = FileCollect[str]; //用key獲取單個文件對象HttpPostedFile string imgName = DateTime.Now.ToString("yyyyMMddhhmmss"); string imgPath = "/" + imgName + FileSave.FileName; //通過此對象獲取文件名 string AbsolutePath = Server.MapPath(imgPath); FileSave.SaveAs(AbsolutePath); //將上傳的東西保存 Response.Write("<img src='" + imgPath + "'/>"); } } return Content("鍵值對數目:" + FileCollect.Count); }