非同步 上傳檔案 ASP.NET

來源:互聯網
上載者:User
非同步 上傳檔案 ASP.NET (以上傳圖片為例子)
html代碼:
<head>   //所需要的兩個JS
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="ajaxfileupload.js" type="text/javascript"></script>
</head>
<img alt="" src="" id="img"   style="display: none" />
<input id="fup" name="fup" type="file" />
<input id="btnUp" type="button" value="上傳" onclick="ajaxFileUploads();"/>

JS代碼:
function ajaxFileUploads()
{
$.ajaxFileUpload(
               {
            url:'Ajax_fileupload.aspx, 
            secureuri:false,
            fileElementId:'fup',                   
            dataType: 'json',                               
            success: function (data, status)
            {
                   if(data.err=="")
                   {
                     document.getElementById("img").style.display="block";
                     document.getElementById("img").src=data.msg;
                   }
                   else
                   {
                     $('#sperr').text(data.err);
                   }
            },
            error: function (data, status, e)
            {
                   $('#sperr').text("上傳失敗!");
            }
         });
}

Ajax_fileupload.aspx頁面:
protected void Page_Load(object sender, EventArgs e)
{
       HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
       HttpPostedFile file = files["fup"];
       if (file.ContentLength <= Convert.ToInt32(SizeFunction() * 1024 * 1024))   //SizeFunction()獲得檔案限制大小 可以自己寫在設定檔裡,限制上傳的大小
       {
         if (IsValidFileType(file.FileName)) //驗證檔案類型
         {
            string picPaht = Server.MapPath(FileFunciton());   //FileFunction()   檔案儲存的路徑     這裡的路徑,名字   隨自己要求設定,我這裡最簡單的日期了.
            Random rd = new Random();
            string name = DateTime.Now.ToString("yyyyMMddhhmmssfff") + rd.Next(1000) + GetExtension(file.FileName); 
            string strNewPath = GetSaveFilePath(picPaht) + name;
            file.SaveAs(strNewPath);
            Response.Write("{msg:'" + dal.ImgUrl() + name + "',err:''}");
         }
         else
         {
            Response.Write("{msg:'',err:'類型錯誤!'}");
         }
       }
       else
       {
         Response.Write("{msg:'',err:'大小錯誤!'}");
       }
}

/// <summary>
/// 驗證檔案類型
/// </summary>
/// <param name="FileName"></param>
/// <returns></returns>
private bool IsValidFileType(string FileName)
{
       string[] _AcceptedFileTypes = TypeFunction().Split('|'); //TypeFunction() 獲得檔案限制類型 這裡我是以"|"分隔, 獲得數組, 迴圈驗證的
       string ext = FileName.Substring(FileName.LastIndexOf(".") + 1, FileName.Length - FileName.LastIndexOf(".") - 1);
       for (int i = 0; i < _AcceptedFileTypes.Length; i++)
       {
         if (ext == _AcceptedFileTypes)
         {
            return true;
         }
       }
       return false;
}

/// <summary>
/// 獲得副檔名
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
private string GetExtension(string fileName)
{
       try
       {
         int startPos = fileName.LastIndexOf(".");
         string ext = fileName.Substring(startPos, fileName.Length - startPos);
         return ext;
       }
       catch
       {
         return string.Empty;
       }
}

/// <summary>
/// 建立檔案要儲存的路徑
/// </summary>
/// <param name="picPath">檔案路徑</param>
/// <returns></returns>
private string GetSaveFilePath(string picPath)
{
       if (!Directory.Exists(picPath))
       {
         Directory.CreateDirectory(picPath);
       }
       return picPath;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.