Processing math: 100%

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


目录
打赏
0
0
0
0
342
分享
相关文章
ASP.NET WEB——项目创建与文件上传操作
ASP.NET WEB——项目创建与文件上传操作
102 0
ASP.NET Core3.1实战教程---基于Jquery单文件上传
ASP.NET Core3.1实战教程---基于Jquery单文件上传
88 0
AJAX | 拦截器、文件上传和下载
AJAX | 拦截器、文件上传和下载
76 0
Asp.Net文件上传
Asp.Net文件上传
47 0
漏刻有时数据可视化ajax访问静态json文件使用POST方法返回405 (Method Not Allowed)的解决方案
漏刻有时数据可视化ajax访问静态json文件使用POST方法返回405 (Method Not Allowed)的解决方案
180 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等