最近在學HttpRequest類搞文件上傳的時候看到Request.Files返回了HttpFileCollection 這個類的一個對象,這個類用於獲取瀏覽器上傳的文件集合,在文件上傳的時候可以通過這個集中獲取上傳的文件內容,文件名等信息。以下來詳細了解一下這個類。
以下給出常用屬性與公用方法。
1、屬性
AllKeys:獲取一個字符串數組,該數組包含文件集合中所有成員的鍵名key,說白了就是所有<input type=”file” name=”xx”>的name的值組成的字符串數組。
Count :獲取包含在 NameObjectCollectionBase 實例中的鍵/值對的數目。說白了就是<input type=”file” name=”xx”>的數量。
Item :表示可通過索引訪問。說白了就是這個對象里的集合可以直接用索引訪問,包括數字索引與key名訪問。
如:HttpFileCollection FileCollect = request.Files;
FileCollect[0]或request.Files[0]與Get一樣,返回的是HttpPostedFile 對象。關於HttpPostedFile這個類可以查看http://www.cnblogs.com/kissdodog/archive/2013/01/12/2857833.html
Keys: 獲取NameObjectCollectionBase.KeysCollection 實例,該實例包含 NameObjectCollectionBase 實例中的所有鍵。
2、方法
CopyTo:從指定的數組索引處開始,將文件集合的成員復制到 Array 中。
Get:可以通過索引或key名稱讀取,從文件集合中返回一個單獨的 HttpPostedFile 對象。重載此屬性以允許按key名稱或數字索引來檢索對象。
GetHashCode:用作特定類型的哈希函數。GetHashCode 適合在哈希算法和數據結構(如哈希表)中使用。
GetKey :返回具有指定數字索引的 HttpFileCollection 成員名稱。
來看代碼:
注意表單提交的編碼方式為enctype="multipart/form- data"
public ActionResult GetForm() { HttpRequest request = System.Web.HttpContext.Current.Request; HttpFileCollection FileCollect = request.Files; //主角登場,獲取成HttpFileCollection對象集合,集合中包含了上傳所有內容,所有的<inut type="file">上傳的內容都在集合里了 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 + FileCollect.Get(str).FileName; string AbsolutePath = Server.MapPath(imgPath); FileSave.SaveAs(AbsolutePath); //將上傳的東西保存 Response.Write("<img src='" + imgPath + "'/>"); } } return Content("鍵值對數目:" + FileCollect.Count); }