表單上傳功能實(shí)現(xiàn) ajax文件異步上傳
項(xiàng)目中用戶上傳總是少不了的,下面就主要的列舉一下表單上傳和ajax上傳!注意: context.Request.Files不適合對(duì)大文件進(jìn)行操作,下面列舉的主要對(duì)于小文件上傳的處理!
資源下載:
一、jQuery官方下載地址:https://jquery.com/download/
一.表單上傳:
html客戶端部分:
<form action="upload.ashx" method="post" enctype="multipart/form-data"> 選擇文件:<input type="file" name="file1" /><br /> <input type="submit" value="上傳" /> </form>
一般處理程序服務(wù)器端:
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; HttpPostedFile file1 = context.Request.Files["file1"]; helper.uploadFile(file1, "~/upload/");//這里就是對(duì)相應(yīng)方法進(jìn)行調(diào)用 context.Response.Write("ok");//提示執(zhí)行成功 }
上傳代碼的封裝:
/// <summary> /// 上傳圖片 /// </summary> /// <param name="file">通過form表達(dá)提交的文件</param> /// <param name="virpath">文件要保存的虛擬路徑</param> public static void uploadImg(HttpPostedFile file,string virpath) { if (file.ContentLength > 1024 * 1024 * 4) { throw new Exception("文件不能大于4M"); } string imgtype = Path.GetExtension(file.FileName); if(imgtype!=".jpg"&&imgtype!=".jpeg") //圖片類型進(jìn)行限制 { throw new Exception("請(qǐng)上傳jpg或JPEG圖片"); } using (Image img = Bitmap.FromStream(file.InputStream)) { string savepath = HttpContext.Current.Server.MapPath(virpath+file.FileName); img.Save(savepath); } } /// <summary> /// 上傳文件 /// </summary> /// <param name="file">通過form表達(dá)提交的文件</param> /// <param name="virpath">文件要保存的虛擬路徑</param> public static void uploadFile(HttpPostedFile file, string virpath) { if (file.ContentLength > 1024 * 1024 * 6) { throw new Exception("文件不能大于6M"); } string imgtype = Path.GetExtension(file.FileName); //imgtype對(duì)上傳的文件進(jìn)行限制 if (imgtype != ".zip" && imgtype != ".mp3") { throw new Exception("只允許上傳zip、rar....文件"); } string dirFullPath= HttpContext.Current.Server.MapPath(virpath); if (!Directory.Exists(dirFullPath))//如果文件夾不存在,則先創(chuàng)建文件夾 { Directory.CreateDirectory(dirFullPath); } file.SaveAs(dirFullPath + file.FileName); }
二.Ajax文件異步上傳:
注明:既然有了表單上傳為什么又要ajax上傳呢?因?yàn)楸韱紊蟼鬟^程中,整個(gè)頁面就刷新了!ajax異步上傳就可以達(dá)到只刷新局部位置,下面就簡單看看ajax上傳吧!
html客戶端部分:
<head> <script src="jquery-2.1.4.js"></script> <script> $(function () { $("#upload").click(function () { $("#imgWait").show(); var formData = new FormData(); formData.append("myfile", document.getElementById("file1").files[0]); $.ajax({ url: "upload.ashx", type: "POST", data: formData, /** *必須false才會(huì)自動(dòng)加上正確的Content-Type */ contentType: false, /** * 必須false才會(huì)避開jQuery對(duì) formdata 的默認(rèn)處理 * XMLHttpRequest會(huì)對(duì) formdata 進(jìn)行正確的處理 */ processData: false, success: function (data) { if (data.status == "true") { alert("上傳成功!"); } if (data.status == "error") { alert(data.msg); } $("#imgWait").hide(); }, error: function () { alert("上傳失??!"); $("#imgWait").hide(); } }); }); }); </script> </head> <body> 選擇文件:<input type="file" id="file1" /><br /> <input type="button" id="upload" value="上傳" /> <img src="wait.gif" style="display:none" id="imgWait" /> </body>
一般處理程序服務(wù)器端:
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; if (context.Request.Files.Count > 0) { HttpPostedFile file1 = context.Request.Files["myfile"]; helper.uploadFile(file1, "~/upload/"); //這里引用的是上面封裝的方法 WriteJson(context.Response, "true", ""); } else { WriteJson(context.Response, "error", "請(qǐng)選擇要上傳的文件"); } }
json代碼封裝:
public static void WriteJson(HttpResponse response, string status1, string msg1, object data1 = null) { response.ContentType = "application/json"; var obj = new { status = status1, msg = msg1, data = data1 }; string json = new JavaScriptSerializer().Serialize(obj); response.Write(json); }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JQuery ajax返回JSON時(shí)的處理方式 (三種方式)
json數(shù)據(jù)是一種經(jīng)型的實(shí)時(shí)數(shù)據(jù)交互的數(shù)據(jù)存儲(chǔ)方法,使用到最多的應(yīng)該是ajax與json配合使用了,下面由腳本之家小編給大家分享JQuery ajax返回JSON時(shí)的處理方式 (三種方式),需要的朋友可以參考下2015-09-09Ajax實(shí)現(xiàn)的異步傳輸與驗(yàn)證示例代碼
Ajax異步傳輸應(yīng)用很廣當(dāng)用戶注冊(cè)時(shí),當(dāng)用戶剛一輸完,立即判斷用戶是否存在這就用到了異步傳輸2014-01-01JavaScript基于Ajax實(shí)現(xiàn)不刷新在網(wǎng)頁上動(dòng)態(tài)顯示文件內(nèi)容
這篇文章主要介紹了JavaScript基于Ajax實(shí)現(xiàn)不刷新在網(wǎng)頁上動(dòng)態(tài)顯示文件內(nèi)容,可實(shí)現(xiàn)實(shí)時(shí)顯示服務(wù)器上txt文件內(nèi)容的功能,是Ajax基本應(yīng)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03Ajax工作原理及優(yōu)缺點(diǎn)實(shí)例解析
這篇文章主要介紹了Ajax工作原理及優(yōu)缺點(diǎn)實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09AJAX實(shí)現(xiàn)數(shù)據(jù)的增刪改查操作詳解【java后臺(tái)】
這篇文章主要介紹了AJAX實(shí)現(xiàn)數(shù)據(jù)的增刪改查操作,結(jié)合實(shí)例形式詳細(xì)分析了ajax結(jié)合java后臺(tái)實(shí)現(xiàn)數(shù)據(jù)庫增刪改查相關(guān)操作技巧,需要的朋友可以參考下2020-06-06