jQuery+ASP.NET的AJAX檔案上傳
ajaxUpFile.ashx 服務端處理
Default.aspx 使用者提交
下面貼出主要程式碼:
JS部分程式碼如下
function TestUp()
{
ajaxFileUpload(“FileUpload1”);
}
function ajaxFileUpload(obfile_id)
{
//準備提交處理
$(“#loading_msg”).html(“<img src=/images/DotAjax.gif />”);
//開始提交
$.ajax
({
type: “POST”,
url:”ajaxUpFile.ashx“,
data:”upfile=”+$(“#”+obfile_id).val(),
success:function (data, status)
{
//alert(data);
var stringArray = data.split(“|”);
if(stringArray[0]==”1″)
{
//stringArray[0] 成功狀態(1為成功,0為失敗)
//stringArray[1] 上傳成功的檔名
//stringArray[2] 訊息提示
$(“#divmsg”).html(“<img src=/images/note_ok.gif />”+stringArray[2]+” 檔案地址:”+stringArray[1]);
$(“#filepreview”).attr({ src:stringArray[1]});
}
else
{
//上傳出錯
$(“#divmsg”).html(“<img src=/images/note_error.gif />”+stringArray[2]+””);
}
$(“#loading_msg”).html(“”);
},
error:function (data, status, e)
{
alert(“上傳失敗:”+e.toString());
}
});
return false; //.NET按鈕控制元件取消提交
}
C#程式碼部分:
/// <summary>
/// 上傳檔案 方法
/// </summary>
/// <param name=”fileNamePath”></param>
/// <param name=”toFilePath”></param>
/// <returns>返回上傳處理結果 格式說明: 0|file.jpg|msg 成功狀態|檔名|訊息 </returns>
public string UpLoadFile(string fileNamePath, string toFilePath)
{
try
{
//獲取要儲存的檔案資訊
FileInfo file = new FileInfo(fileNamePath);
//獲得副檔名
string fileNameExt = file.Extension;
//驗證合法的檔案
if (CheckFileExt(fileNameExt))
{
//生成將要儲存的隨機檔名
string fileName = GetFileName() + fileNameExt;
//檢查儲存的路徑 是否有/結尾
if (toFilePath.EndsWith(“/”) == false) toFilePath = toFilePath + “/”;
//按日期歸類儲存
string datePath = DateTime.Now.ToString(“yyyyMM”) + “/” + DateTime.Now.ToString(“dd”) + “/”;
if (true)
{
toFilePath += datePath;
}
//獲得要儲存的檔案路徑
string serverFileName = toFilePath + fileName;
//物理完整路徑
string toFileFullPath = HttpContext.Current.Server.MapPath(toFilePath);
//檢查是否有該路徑 沒有就建立
if (!Directory.Exists(toFileFullPath))
{
Directory.CreateDirectory(toFileFullPath);
}
//將要儲存的完整檔名
string toFile = toFileFullPath + fileName;
///建立WebClient例項
WebClient myWebClient = new WebClient();
//設定windows網路安全認證 方法1
myWebClient.Credentials = CredentialCache.DefaultCredentials;
////設定windows網路安全認證 方法2
//NetworkCredential cred = new NetworkCredential(“UserName”, “UserPWD”);
//CredentialCache cache = new CredentialCache();
//cache.Add(new Uri(“UploadPath”), “Basic”, cred);
//myWebClient.Credentials = cache;
//要上傳的檔案
FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
//FileStream fs = OpenFile();
BinaryReader r = new BinaryReader(fs);
//使用UploadFile方法可以用下面的格式
//myWebClient.UploadFile(toFile, “PUT”,fileNamePath);
byte[] postArray = r.ReadBytes((int)fs.Length);
Stream postStream = myWebClient.OpenWrite(toFile, “PUT”);
if (postStream.CanWrite)
{
postStream.Write(postArray, 0, postArray.Length);
}
else
{
return “0|” + serverFileName + “|” + “檔案目前不可寫”;
}
postStream.Close();
return “1|” + serverFileName + “|” + “檔案上傳成功”;
}
else
{
return “0|errorfile|” + “檔案格式非法”;
}
}
catch (Exception e)
{
return “0|errorfile|” + “檔案上傳失敗,錯誤原因:” + e.Message;
}
}
本文轉自linzheng 51CTO部落格,原文連結:http://blog.51cto.com/linzheng/1081625
相關文章
- Ajax 之檔案上傳
- ajax上傳檔案的請求
- ajax實現檔案上傳
- jqm檔案上傳,上傳圖片,jqm的表單操作,jqm的ajax的使用,jqm檔案操作大全,檔案操作demo
- AJAX資料互動及檔案上傳功能
- AjaxFileUpload檔案上傳元件(php+jQuery+ajax)元件PHPjQuery
- 支援多檔案上傳,預覽,拖拽,基於bootstrap的上傳外掛fileinput的ajax非同步上傳boot非同步
- 【ajax】 html js jquery ajax上傳檔案【一眼就會】【實用】HTMLJSjQuery
- php檔案上傳之多檔案上傳PHP
- 檔案上傳之三基於flash的檔案上傳
- 單個檔案上傳和批量檔案上傳
- 檔案上傳
- 上傳檔案的陷阱
- SpringMVC 單檔案上傳與多檔案上傳SpringMVC
- jquery ajax file upload NET MVC 無重新整理檔案上傳jQueryMVC
- ajax利用FormData、FileReader實現多檔案上傳php獲取ORMPHP
- PHP檔案上傳進度條完整程式實現 jQuery Ajax apcPHPjQuery
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點
- 前端大檔案上傳/分片上傳前端
- Flask——檔案上傳Flask
- PHP上傳檔案PHP
- JavaScript 檔案上傳JavaScript
- Git上傳檔案Git
- YII檔案上傳
- 檔案上傳概述
- beego上傳檔案Go
- 上傳檔案流程
- 上傳EXCLE檔案
- PHP 檔案上傳PHP
- 檔案上傳漏洞
- Laravel 中的檔案上傳Laravel
- 檔案上傳的異常
- 上傳檔名為中文的檔案
- 利用FormData物件實現AJAX檔案上傳功能及後端實現ORM物件後端
- 關於jQuery在Asp.Net Mvc 框架下Ajax檔案上傳的實現jQueryASP.NETMVC框架
- AngularJS實現的檔案檔案上傳AngularJS
- MVC檔案上傳 - 使用Request.Files上傳多個檔案MVC
- .NET Core 如何上傳檔案及處理大檔案上傳