AjaxFileUpload在C#中应用

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一、前台页面

<!DOCTYPE html>

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title></title>

<scrip[flash=500,400]http://www.knowsky.com/js/jquery-1.8.2.min.js[/flash]t src="js/jquery-1.8.2.min.js" type="text/java[flash=500,400]http://www.knowsky.com/js/[/flash]script"></script>

<script src="js/Ajaxfileupload.js"></script>

<script type="text/Javascript">

function CheckFile() {

$.ajaxFileUpload({

url: 'upload.ashx?time=' + new Date(),

secureuri: false,

fileElementId: 'fuFileLoad', //上传控件ID

dataType: 'json', //返回值类型 一般设置为json

success: function (data, status) {

var jsonData = $.parseJSON(data);

alert(jsonData.Eor);

if (jsonData.Eor == "sucCSS") {

alert(jsonData.Msg);

} else {

alert(jsonData.Msg);

}

},

error: function (data, status, e) {

alert(e); //就是在这弹出“语法错误”

}

});

}

</script>

</head>

<body>

<form id="form1" runat="server">

<asp:FileUpload ID="fuFileLoad" runat="server" onchange="CheckFile();" />

</form>

</body>

</html>

二、上传功能代码 upload.ashx

using System;

using System.IO;

using System.Web;

using System.Web.Script.Serialization;

public class upload : IHttpHandler {

public voidPRocessRequest (HttpContext context) {

//文件大小限制10M

const int maxSize = 10485760;

//定义允许上传的文件扩展名

var ext = new[] { "rar", "zip", "gif", "jpg", "jpeg", "png", "bmp", "xls", "xlsx", "doc", "docx", "et", "wps" };

string strExt = "";

foreach (var a in ext)

{

strExt += a + "/";

}

strExt = strExt.TrimEnd('/');

string savePath = "/upLoads/"; //文件保存路径

var resp = new UploadResponse();

HttpFileCollection imgFile = context.Request.Files;

if (imgFile.Count > 0)

{

string fileExt = Path.GetExtension(imgFile[0].FileName); //获得扩展名

if (string.IsNullOrEmpty(fileExt) || Array.IndexOf(ext, fileExt.Substring(1).ToLower()) < 0)

{

resp.Eor = "error";

resp.Msg = string.Format("扩展名为{0}的文件不允许上传!\n只允许上传{1}格式的文件。", fileExt, strExt);

}

else

{

if (imgFile[0].InputStream.Length > maxSize)

{

resp.Eor = "error";

resp.Msg = "上传文件大小超过限制!";

}

else

{

string fileNewName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + fileExt; //新的文件名

try

{

SaveFile(imgFile[0], context.Server.MapPath(savePath), fileNewName); //保存文件

resp.Eor = "succss";

resp.Msg = "上传成功! 文件大小为:" + imgFile[0].ContentLength;

resp.ImgUrl = savePath + fileNewName;

resp.FName = fileNewName;

resp.OName = imgFile[0].FileName;

}

catch (Exception ex)

{

resp.Eor = "error";

resp.Msg = ex.ToString();

}

}

}

}

else

{

resp.Eor = "error";

resp.Msg = "请选择文件!";

}

context.Response.ContentType = "text/html";

context.Response.Write(new JavaScriptSerializer().Serialize(resp));

context.Response.End();

}

private void SaveFile(HttpPostedFile imgFile, string savePath, string fileName)

{

if (!Directory.Exists(savePath)) //判断文件存放路径是否存在

{

Directory.CreateDirectory(savePath);

}

imgFile.SaveAs(Path.Combine(savePath, fileName));

}

public class UploadResponse

{

public string Eor { get; set; }

public string Msg { get; set; }

public string ImgUrl { get; set; }

public string FName { get; set; }

public string OName { get; set; }

}

public bool IsReusable {

get {

return false;

}

}

}

三、返回的json数据调整

[flash=500,400]http://s1.knowsky.com/20160211/yhfd0q1uby414.jpg[/flash]

四、源代码下载地址:http://pan.baidu.com/s/1jGo1wzW

热烈欢迎大家吐槽。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航