您的位置:首页 > Web前端 > JQuery

jQuery+ASP.NET的AJAX文件上传

2010-10-14 23:39 375 查看
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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: