這次來看下一個MVC網站上傳文件的功能,其中上傳用到uploadify這個jquery插件,網上還有很多類似的,哪種都無所謂,能實現功能便行,貌似uploadify官網上的這個插件是要付費的,這里就順便提供這個插件的下載地址如下:http://files.cnblogs.com/xmfdsh/uploadify3.2.zip
首先創建一個MVC的網站,新建一個文件夾名稱為UpLoadiFy(這里可以隨便起名稱),來存放uploadify這個插件需要用到的js,css以及flash文件。如下圖:
Home控制器有兩個方法,Index和一個上傳時插件傳入的UpLoadFile方法。如下:
public ActionResult Index() { return View(); } [HttpPost] public ContentResult UpLoadFile(HttpPostedFileBase fileData) { if (fileData != null && fileData.ContentLength > 0) { string fileSave = Server.MapPath("~/UpLoad/"); //獲取文件的擴展名 string extName = Path.GetExtension(fileData.FileName); //得到一個新的文件名稱 string newName = Guid.NewGuid().ToString() + extName; fileData.SaveAs(Path.Combine(fileSave, newName)); } return Content(""); }
至於前台的話就只需要引用jquery的js和對應插件的js,css,便可。:
至於<script></script>里面的代碼就如下了,通過初始化來實現上傳功能,至於里面的參數可以去google一下uploadify這個插件的相關參數,下面的代碼也注釋了一下主要參數的作用。
<script type="text/javascript"> $(function () { $('#Filedata').uploadify({ fileObjName: 'Filedata', uploader: '/Home/UpLoadFile', // 服務器端處理地址 swf: '/UpLoadiFy/uploadify.swf', // 上傳使用的 Flash width: 60, // 按鈕的寬度 height: 23, // 按鈕的高度 buttonText: "上傳", // 按鈕上的文字 buttonCursor: 'hand', // 按鈕的鼠標圖標 fileObjName: 'Filedata', // 上傳參數名稱 // 兩個配套使用 fileTypeExts: "*.jpg;*.png", // 擴展名,限制擴展名,可按照自己想要的來設置 fileTypeDesc: "請選擇 jpg png 文件", // 文件說明 auto: true, // 選擇之后,自動開始上傳 multi: true, // 是否支持同時上傳多個文件 queueSizeLimit: 5 // 允許多文件上傳的時候,同時上傳文件的個數 }); }); </script>
這樣便搞定了整個基本上傳的功能,從前台的jquery插件選擇了文件后,便會把這個文件的相關信息傳入都控制器后台的UpLoadFile方法,然后再保存起來到指定的路徑,如上面的代碼我保存的是("~/UpLoad/");這個路徑。運行效果如下: