您好,登錄后才能下訂單哦!
本文導讀:在MVC中實現文件上傳與傳統的WebForm上傳文件方法都差不多,在cshtml視圖頁面放一個file標簽,然后在actionname方法中處理用戶上傳的文件。下面簡單介紹MVC中上傳文件的方法。
一、MVC中如何上傳文件
1、在Web Forms中,當你把一個FileUpload控件拖到設計器中,你或許沒有注意到在生成的HTML中會在form標簽中加入一條額外屬性 enctype="multipart/form-data". 而FileUpload控件本身會生成為<input type=”file” />,在MVC的view里,下列HTML可以做到同樣效果
HTML 代碼 復制
<form action="/" method="post" enctype="multipart/form-data"> <input type="file" name="FileUpload1" /><br /> <input type="submit" name="Submit" id="Submit" value="Upload" /></form>
注意form標簽已經包括了enctype標簽,而method屬性則設為”post”,這樣設置并不多于因為默認的提交時通過HTTP get方式進行
2、在Asp.net MVC中Controller類中,Request對象作為HttpRequestBase類型的一個屬性存在。HttpReuqestBase其實是 HTTP請求的一個封裝,暴漏了很多屬性,包括Files collection(其實是HttpFileCollectionBase的集合),在集合中的每一個元素都是HttpPostedFileBase的 集合,擴展方法是用于確保上傳的文件是否存在。實際上,這和FileUpload.HasFile()方法的工作原理一致。
二、MVC上傳文件的實例:
1、視圖文件
前臺引擎采用Razor
上傳頁View:
C# 代碼 復制
@model System.Web.HttpContextBase@{ ViewBag.Title = "上傳文件";}<h3>上傳文件</h3><br /><br />@*new { enctype = "multipart/form-data" }比不可少,否則上傳文件不會成功 *@ @using (Html.BeginForm("Upload", "UploadFile", FormMethod.Post, new { enctype = "multipart/form-data" })){ <text>選擇上傳文件:</text><input name="file" type="file" id="file" /> <br /> <br /> <input type="submit" name="Upload" value="Upload" />}
2、后臺UploadFileController
C# 代碼 復制
[HttpPost] public ActionResult Upload(FormCollection form) { if (Request.Files.Count == 0) { //Request.Files.Count 文件數為0上傳不成功 Return View(); } var file = Request.Files[0]; if (file.ContentLength == 0) { //文件大小大(以字節為單位)為0時,做一些操作 Return View(); } else { //文件大小不為0 HttpPostedFileBase file = Request.Files[0]; //保存成自己的文件全路徑,newfile就是你上傳后保存的文件, //服務器上的UpLoadFile文件夾必須有讀寫權限 file.SaveAs(Server.MapPath(@"UploadFile\\newfile")); } newFile = DateTime.Now.ToString("yyyyMMddHHmmss") + ".sl"; return View(); }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。