国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

表單上傳功能實現 ajax文件異步上傳

2024-09-01 08:30:53
字體:
來源:轉載
供稿:網友

項目中用戶上傳總是少不了的,下面就主要的列舉一下表單上傳和ajax上傳!注意: context.Request.Files不適合對大文件進行操作,下面列舉的主要對于小文件上傳的處理!

資源下載:

一、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>

一般處理程序服務器端:

public void ProcessRequest(HttpContext context)    {      context.Response.ContentType = "text/plain";      HttpPostedFile file1 = context.Request.Files["file1"];      helper.uploadFile(file1, "~/upload/");//這里就是對相應方法進行調用      context.Response.Write("ok");//提示執行成功    }

上傳代碼的封裝:

/// <summary>    /// 上傳圖片    /// </summary>    /// <param name="file">通過form表達提交的文件</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") //圖片類型進行限制      {        throw new Exception("請上傳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表達提交的文件</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對上傳的文件進行限制      if (imgtype != ".zip" && imgtype != ".mp3")      {        throw new Exception("只允許上傳zip、rar....文件");      }      string dirFullPath= HttpContext.Current.Server.MapPath(virpath);      if (!Directory.Exists(dirFullPath))//如果文件夾不存在,則先創建文件夾      {        Directory.CreateDirectory(dirFullPath);      }      file.SaveAs(dirFullPath + file.FileName);    }

二.Ajax文件異步上傳:

注明:既然有了表單上傳為什么又要ajax上傳呢?因為表單上傳過程中,整個頁面就刷新了!ajax異步上傳就可以達到只刷新局部位置,下面就簡單看看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才會自動加上正確的Content-Type     */     contentType: false,     /**     * 必須false才會避開jQuery對 formdata 的默認處理     * XMLHttpRequest會對 formdata 進行正確的處理     */     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>

一般處理程序服務器端:

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", "請選擇要上傳的文件");   }  }

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);    }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溧水县| 余干县| 雅安市| 田东县| 怀柔区| 离岛区| 盐源县| 三明市| 蛟河市| 天峻县| 甘孜| 绥德县| 荣成市| 广州市| 太保市| 丰镇市| 海伦市| 霍林郭勒市| 九台市| 堆龙德庆县| 青铜峡市| 巴里| 宁武县| 萨迦县| 北辰区| 苍山县| 万盛区| 沽源县| 富宁县| 嘉义县| 河东区| 勐海县| 剑河县| 平塘县| 洛扎县| 永丰县| 台中县| 加查县| 佛冈县| 济阳县| 高邑县|