ASP.NET插件uploadify如何批量上传文件
创始人
2024-11-28 10:21:54
0次

具体内容如下

1.首先准备uploadify的js文件,网上一搜一大堆

ASP.NET插件uploadify如何批量上传文件

2.上传页面UpFilePage.aspx

ASP.NET插件uploadify如何批量上传文件

关键代码:




上传文件






#fileSave { padding-left:5px; padding-right:5px;}
#fileSave .uploadifyQueueItem{ width:530px;}
#fileQueue { padding-left:5px; padding-right:5px;}
#fileQueue .uploadifyQueueItem { width:530px;}
#uploadifyUploader { position:absolute; opacity:0;}
.uploadify-button{ height: 30px; line-height: 30px; width: 109px; text-align:center; border:0px; margin-bottom:5px; background:#ff6600; color:#fff;}
.cancel a { background:url(/jquery.uploadify/cancel.png) no-repeat center center; display:inline-block; width:16px; height:16px;}




添加文件
<%=GetFile() %>
var fileCount = 0; $(document).ready(function () { fileCount = $("#fileSave>div.uploadifyQueueItem").length; $("input[name='radPhone']:eq(0)").attr("checked", "checked"); $("#uploadify").uploadify({ 'uploader': '/jquery.uploadify/uploadify.swf',//uploadify.swf 文件的相对路径 'script': '/jquery.uploadify/uploadHandler.ashx',//处理文件的程序 //'cancelImg': '/Scripts/jquery.uploadify/cancel.png',//取消图片 //'folder': 'upfiles',//上传文件存放的目录 'queueID': 'fileQueue',//文件队列的ID //'fileDesc': '*.flv;*.mp4;*.wmv;*.avi;*.3gp;*.mpg;*.ppt;*.pptx',//上传格式限制 //'fileExt': '*.flv;*.mp4;*.wmv;*.avi;*.3gp;*.mpg;*.ppt;*.pptx',//上传格式限制 "queueSizeLimit": "5",//当允许多文件生成时,设置选择文件的个数 'auto': true,//设置为true当选择文件后就直接上传了 'multi': true,//设置为true时可以上传多个文件 "fileDataName": "imgFile",//设置一个名字,在服务器处理程序中根据该名字来取上传文件的数据 "sizeLimit": "5242880",//上传文件的大小限制,以字节为单位 "simUploadLimit": "1",// 允许同时上传的个数 默认值:1  "onSelect": function (e, queueId, fileObj) { fileCount = $("#fileSave>div.uploadifyQueueItem").length; var less = 5 - fileCount; if (less <= 0) { layer.msg("最多只能上传5个附件"); $("#a_upload").attr("href", "javascript:"); return false; } else { $("#a_upload").attr("href", "javascript:$('#uploadify').uploadifyUpload()"); return true; } }, "onComplete": function () { $.ajax({ type: "post", url: "/UploadAction/UploadHandler.ashx", data: { operate: "GetFile" }, async: false, success: function (objdata) { $("#fileSave").html(objdata); fileCount = $("#fileSave>div.uploadifyQueueItem").length; var less = 5 - fileCount; if (less <= 0) { $("#a_upload").attr("href", "javascript:"); $("#fileQueue").html(""); return false; } else { $("#a_upload").attr("href", "javascript:$('#uploadify').uploadifyUpload()"); return true; } } }); }, "onCancel": function () { fileCount = $("#fileSave>div.uploadifyQueueItem").length; var less = 5 - fileCount; if (less <= 0) { $("#a_upload").attr("href", "javascript:"); return false; } else { $("#a_upload").attr("href", "javascript:$('#uploadify').uploadifyUpload()"); return true; } }, }); }); function deleteFile(path) { $.ajax({ type: "post", url: "/UploadAction/UploadHandler.ashx", data: { operate: "deleteFile", file: path }, success: function (objdata) { $("#fileSave").html(objdata); fileCount = $("#fileSave>div.uploadifyQueueItem").length; var less = 5 - fileCount; if (less <= 0) { $("#a_upload").attr("href", "javascript:"); } else $("#a_upload").attr("href", "javascript:$('#uploadify').uploadifyUpload()"); } }); }

后台的GetFile()方法:

/// 
/// 获取cookie附件信息
/// 
/// 
protected string GetFile()
{
#region 获取cookie附件信息

StringBuilder strHtml = new StringBuilder();
HttpCookie fileCookie = Request.Cookies["FileCookie"];
if (fileCookie != null)
{
string[] fileArray = new string[1];
if (fileCookie.Value.Contains("|"))
fileArray = fileCookie.Value.Split('|');
else
fileArray[0] = fileCookie.Value;
foreach (string objFile in fileArray)
{
if (!string.IsNullOrEmpty(objFile) && objFile.Contains(","))
{
string[] file = objFile.Split(',');
strHtml.Append(@"");
strHtml.Append(@"");
strHtml.Append("");
//strHtml.Append(@"");
strHtml.Append(@"
"); strHtml.Append(@"" + HttpUtility.UrlDecode(file[0]) + " - 100%"); strHtml.Append(@""); strHtml.Append(@"
"); strHtml.Append(@"
"); strHtml.Append(@"
"); } } } return strHtml.ToString(); #endregion }

3.UploadAction文件夹下的一般处理程序:

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string operate = context.Request["operate"];
if (operate == "deleteFile")
{
#region 删除文件附件信息
//获取文件路径
string filePath = context.Server.MapPath(context.Request["file"]);
//判断文件是否存在
if (File.Exists(filePath))
File.Delete(filePath);//删除文件
//获取附件cookie信息
HttpCookie fileCookie = context.Request.Cookies["FileCookie"];
string[] fileArray = new string[1];
if (fileCookie != null)
{
filePath = filePath.Remove(0, filePath.IndexOf("upfiles")).Replace("\\", "/");
if (fileCookie.Value.Contains("|"))
fileArray = fileCookie.Value.Split('|');
else
fileArray[0] = fileCookie.Value;
string strFile = "";
for (int i = 0; i < fileArray.Length; i++)
{
if (!fileArray[i].Contains(filePath))
strFile += fileArray[i] + "|";
}
if (strFile.Contains("|"))
strFile = strFile.Remove(strFile.Length - 1);
fileCookie.Value = strFile;
fileCookie.Expires = DateTime.Now.AddDays(1);
fileCookie.HttpOnly = true;
context.Response.AppendCookie(fileCookie);


StringBuilder strHtml = new StringBuilder();
if (fileCookie.Value.Contains("|"))
fileArray = fileCookie.Value.Split('|');
else
fileArray[0] = fileCookie.Value;
foreach (string objFile in fileArray)
{
if (!string.IsNullOrEmpty(objFile) && objFile.Contains(","))
{
string[] file = objFile.Split(',');
strHtml.Append(@"");
strHtml.Append(@"");
strHtml.Append("");
//strHtml.Append(@"");
strHtml.Append(@"
"); strHtml.Append(@"" + HttpUtility.UrlDecode(file[0]) + " - 100%"); strHtml.Append(@""); strHtml.Append(@"
"); strHtml.Append(@"
"); strHtml.Append(@"
"); } } context.Response.Write(strHtml.ToString()); } #endregion } else if (operate == "GetFile") { #region 获取上传的附件并展示 StringBuilder strHtml = new StringBuilder(); HttpCookie fileCookie = context.Request.Cookies["FileCookie"]; if (fileCookie != null) { string[] fileArray = new string[1]; if (fileCookie.Value.Contains("|")) fileArray = fileCookie.Value.Split('|'); else fileArray[0] = fileCookie.Value; foreach (string objFile in fileArray) { if (!string.IsNullOrEmpty(objFile) && objFile.Contains(",")) { string[] file = objFile.Split(','); strHtml.Append(@""); strHtml.Append(@""); strHtml.Append(""); //strHtml.Append(@""); strHtml.Append(@"
"); strHtml.Append(@"" + HttpUtility.UrlDecode(file[0]) + " - 100%"); strHtml.Append(@""); strHtml.Append(@"
"); strHtml.Append(@""); strHtml.Append(@""); } } } context.Response.Write(strHtml.ToString()); #endregion } }

4.上传文件uploadHandler.ashx一般处理程序代码,文件上传路径可以根据剧情需要自由设定:

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";

HttpCookie fileCookie = context.Request.Cookies["FileCookie"];
if (fileCookie != null)
{
string[] fileArray = new string[1];
if (fileCookie.Value.Contains("|"))
fileArray = fileCookie.Value.Split('|');
if (fileArray.Length >= 5)
return;
}
else
{
fileCookie = new HttpCookie("FileCookie");
fileCookie.Value = "";
context.Response.Cookies.Add(fileCookie);
}

String aspxUrl = context.Request.Path.Substring(0, context.Request.Path.LastIndexOf("/") + 1);

//文件保存目录路径
String savePath = "/upfiles/";

//文件保存目录URL
String saveUrl = "/upfiles/";

//if (context.Request.Cookies["Member"] != null)
//{
// savePath += context.Request.Cookies["Member"]["MemberId"] + "/";
// saveUrl += context.Request.Cookies["Member"]["MemberId"] + "/";
//}
string Member = Guid.NewGuid().ToString().Trim().Replace("-", "");
savePath += Member + "/";
saveUrl += Member + "/";

//定义允许上传的文件扩展名
/*Hashtable extTable = new Hashtable();
extTable.Add("image", "gif,jpg,jpeg,png,bmp");
extTable.Add("flash", "swf,flv");
extTable.Add("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,mp4");
extTable.Add("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2,swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,mp4,wps");*/

//最大文件大小
int maxSize = 5242880;

HttpPostedFile imgFile = context.Request.Files["imgFile"];
/*if (imgFile == null)
{
showError("请选择文件。");
}*/

String dirPath = context.Server.MapPath(savePath);
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
//showError("上传目录不存在。");
}

String dirName = context.Request.QueryString["dir"];
if (String.IsNullOrEmpty(dirName))
{
dirName = "file";
}
/*if (!extTable.ContainsKey(dirName))
{
showError("目录名不正确。");
}*/

String fileName = imgFile.FileName;
String fileExt = Path.GetExtension(fileName).ToLower();


/*if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(((String)extTable[dirName]).Split(','), fileExt.Substring(1).ToLower()) == -1)
{
showError("上传文件扩展名是不允许的扩展名。\n只允许" + ((String)extTable[dirName]) + "格式。");
}
if (dirName.Contains("image"))
{
if (imgFile.InputStream == null || imgFile.InputStream.Length > maxSize)
{
showError("上传文件超过5M大小限制。");
}
}*/

//创建文件夹
dirPath += dirName + "/";
saveUrl += dirName + "/";
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
String ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
dirPath += ymd + "/";
saveUrl += ymd + "/";
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}

String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;
String filePath = dirPath + newFileName;

imgFile.SaveAs(filePath);

String fileUrl = saveUrl + newFileName;

/*Hashtable hash = new Hashtable();
hash["error"] = 0;
hash["url"] = fileUrl;
context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8");
context.Response.Write(JsonMapper.ToJson(hash));
context.Response.End();*/

if (fileCookie != null)
{
string strFile = fileCookie.Value;
if (!string.IsNullOrEmpty(strFile))
strFile = strFile + "|" + HttpUtility.UrlEncode(fileName) + "," + fileUrl;
else
strFile = HttpUtility.UrlEncode(fileName) + "," + fileUrl;
fileCookie.Value = strFile;
fileCookie.Expires = DateTime.Now.AddDays(1);
fileCookie.HttpOnly = true;
context.Response.AppendCookie(fileCookie);
}
context.Response.Write("1");
context.Response.End();
}

5.所有代码敲完OK,可以收获成果了:

ASP.NET插件uploadify如何批量上传文件

上一篇:ASP.NET中怎么实现邮件发送功能

下一篇:.net core 1.0如何实现单点登录负载多服务器

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...