效果如图:
上传前
上传中
HTML代码:
<div class="widget-content nopadding">
<table class="table table-bordered table-striped">
<tbody>
<tr class="odd gradeC">
<td>上传XML列表:</td>
<td style="text-align: left">
<div id="fileQueue" class="fileQueue" style="width: 670px; height: 100px;"></div> </td>
<td> <input type="file" name="file_upload" id="file_upload" /></td>
</tr>
<tr class="even gradeX"><td colspan="3"> <p>
<input type="button" class="btn btn-info" id="btnUpload" οnclick="doUpload()" value="上传" />
<input type="button" class="btn btn-info" id="btnCancelUpload" οnclick="$('#file_upload').uploadify('cancel')" value="取消" />
</p>
<div id="div_show_files"></div>
</td>
</tr>
</tbody>
</table>
</div> </div>
JS参照引用:
<script src="assets/js/jquery-1.8.2.min.js"></script>
<!--引入uploadify-->
<script type="text/Javascript" src="plugins/uploadify/jquery.uploadify.js"></script>
<link type="text/css" href="plugins/uploadify/uploadify.css" rel="stylesheet" />
<script type="text/javascript">
$(function () {
var guid = '<%=Request["guid"] %>';
var type = '<%=Request["type"] %>';
if (guid == null || guid == "") {
guid = newGuid();
}
if (type != null) {
type = type + '/';
}
$('#file_upload').uploadify({
'swf': 'plugins/uploadify/uploadify.swf', //FLash文件路径
'buttonText': '浏 览', //按钮文本
'uploader': 'uploadhandler.ashx?guid=' + guid, //处理ASHX页面
'formData': { 'folder': 'picture', 'isCover': 1 }, //传参数
'queueID': 'fileQueue', //队列的ID
'queueSizeLimit': 999, //队列最多可上传文件数量,默认为999
'auto': false, //选择文件后是否自动上传,默认为true
'multi': true, //是否为多选,默认为true
'removeCompleted': true, //是否完成后移除序列,默认为true
'fileSizeLimit': '0', //单个文件大小,0为无限制,可接受KB,MB,GB等单位的字符串值
'fileTypeDesc': 'All Files', //文件描述
'fileTypeExts': '*.xml', //上传的文件后缀过滤器
'onQueueComplete': function (queueData) { //所有队列完成后事件
if (queueData.queueLength>0) alert("上传完毕!");
},
'onError': function (event, queueId, fileObj, errorObj) {
alert(errorObj.type + ":" + errorObj.info);
},
'onUploadStart': function (file) {
},
'onUploadSuccess': function (file, data, response) { //一个文件上传成功后的响应事件处理
// var data = $.parseJSON(data);//如果data是json格式
//var errMsg = "";
if ($.parseJSON(data) == 2) {
alert("目录UpLoadImg/ChannelTvXML不存在或名称不对!"); return false;
}
}
});
});
function newGuid() {
var guid = "";
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
guid += n;
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
guid += "-";
}
return guid;
}
//执行上传
function doUpload() {
$('#file_upload').uploadify('upload', '*');
}
</script>
C# 一般处理程序代码: UploadHandler.ashx
public class UploadHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Request.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
context.Response.Charset = "UTF-8";
if (context.Request.Files.Count > 0)
{
#region 获取上传路径
string uploadFolder = GetUploadFolder();
#endregion
if (System.IO.Directory.Exists(uploadFolder))
{//如果上传路径存在
HttpPostedFile file = context.Request.Files["Filedata"];
string filePath = Path.Combine(uploadFolder, file.FileName);
file.SaveAs(filePath);
List<ChannelListInfo> channellist = GetXmlNodeInformation(filePath);
using (GoodLookDataContext db = new GoodLookDataContext())
{
// Insert this List<> of records using a Bulk Insert
//利用BulkCopyToDatabase 批量插入数据库中必须保持channellist和数据库中字段完全一致,大小写,否则报错。
DataTableHelper.BulkCopyToDatabase(channellist, "channeltvlist", db);
}
SearchDataClass.DeleteDir(filePath);
context.Response.Write("0");
}
else
{
context.Response.Write("2");
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
private static List<ChannelListInfo> GetXmlNodeInformation(string xmlPath)
{
List<ChannelListInfo> tvlist = new List<ChannelListInfo>();
try
{
//定义并从xml文件中加载节点(根节点)
XElement rootNode = XElement.Load(xmlPath);
//查询语句: 获得根节点下name子节点(此时的子节点可以跨层次:孙节点、重孙节点)
var channeltv = rootNode.Element("channel").Attribute("name").Value;
tvlist = (from p in rootNode.Descendants("program")
orderby p.Element("start").Value ascending
select new ChannelListInfo
{
WeekDate = CaculateWeekDay(DateTime.Parse(p.Element("start").Value).Year,
DateTime.Parse(p.Element("start").Value).Month, DateTime.Parse(p.Element("start").Value).Day),
ChannelTV = channeltv,
ChannelPlayDate=DateTime.Parse(p.Element("start").Value) ,
ChannelStartDate = DateTime.Parse(p.Element("start").Value),
ChannelEndDate = DateTime.Parse(p.Element("end").Value),
ChannelName = p.Element("name").Value,
ChannelType = p.Element("type").Value,
ChannelSummary = p.Element("summary").Value,
}).ToList<ChannelListInfo>();
}
catch { }
return tvlist;
}
/// 基姆拉尔森计算公式计算日期
/// </summary>
/// <param name="y">年</param>
/// <param name="m">月</param>
/// <param name="d">日</param>
/// <returns>星期几</returns>
protected static string CaculateWeekDay(int y, int m, int d)
{
if (m == 1 || m == 2)
{
m += 12;
y--; //把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
}
int week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
string weekstr = "";
switch (week)
{
case 0: weekstr = "星期一"; break;
case 1: weekstr = "星期二"; break;
case 2: weekstr = "星期三"; break;
case 3: weekstr = "星期四"; break;
case 4: weekstr = "星期五"; break;
case 5: weekstr = "星期六"; break;
case 6: weekstr = "星期日"; break;
}
return weekstr;
}
/// <summary>
/// 获取上传目录
/// </summary>
/// <returns></returns>
public static string GetUploadFolder()
{
string rootPath = HttpContext.Current.Server.MapPath("~");
return Path.Combine(rootPath, "UpLoadImg/ChannelTvXML");
}
}
public class ChannelListInfo
{
// public string ChannelID { get; set; }
public string WeekDate { get; set; }
public string ChannelTV { get; set; }
public string ChannelName { get; set; }
public string ChannelType { get; set; }
public string ChannelSummary { get; set; }
// public string ChannelImg { get; set; }
public DateTime ChannelStartDate { get; set; }
public DateTime ChannelEndDate { get; set; }
// public DateTime? AddTime { get; set; }
public DateTime? ChannelPlayDate { get; set; }
public int FatherTvNameID { get; set; }
}
XML:格式
<?xml version="1.0" encoding="UTF-8"?>
<epg>
<channel name="BTV-1(高清)">
<program>
<start>2016-03-25 00:48:00</start>
<end>2016-03-25 00:50:00</end>
<name>晚间气象服务</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 00:50:00</start>
<end>2016-03-25 00:53:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 00:53:00</start>
<end>2016-03-25 01:38:00</end>
<name>中国骑兵</name>
<type>战争</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 01:38:00</start>
<end>2016-03-25 01:39:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 01:39:00</start>
<end>2016-03-25 02:24:00</end>
<name>中国骑兵</name>
<type>战争</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 02:24:00</start>
<end>2016-03-25 02:25:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 02:25:00</start>
<end>2016-03-25 03:10:00</end>
<name>中国骑兵</name>
<type>战争</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 03:10:00</start>
<end>2016-03-25 03:55:00</end>
<name>中国骑兵</name>
<type>战争</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 03:55:00</start>
<end>2016-03-25 04:40:00</end>
<name>中国骑兵</name>
<type>战争</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 04:40:00</start>
<end>2016-03-25 04:42:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 04:42:00</start>
<end>2016-03-25 05:42:00</end>
<name>养生堂</name>
<type>健康</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 05:42:00</start>
<end>2016-03-25 06:00:00</end>
<name>法治进行时</name>
<type>法制/社会</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 06:00:00</start>
<end>2016-03-25 06:01:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 06:01:00</start>
<end>2016-03-25 06:19:00</end>
<name>法治进行时</name>
<type>法制/社会</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 06:19:00</start>
<end>2016-03-25 06:20:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 06:20:00</start>
<end>2016-03-25 06:55:00</end>
<name>养生堂精编版</name>
<type>健康</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 06:55:00</start>
<end>2016-03-25 06:57:00</end>
<name>早间气象服务</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 06:57:00</start>
<end>2016-03-25 07:00:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 07:00:00</start>
<end>2016-03-25 09:00:00</end>
<name>北京您早</name>
<type>时政</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 09:00:00</start>
<end>2016-03-25 09:06:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 09:06:00</start>
<end>2016-03-25 10:11:00</end>
<name>精品栏目荟萃</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 10:11:00</start>
<end>2016-03-25 10:17:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 10:17:00</start>
<end>2016-03-25 11:01:00</end>
<name>芈月传</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 11:01:00</start>
<end>2016-03-25 11:09:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 11:09:00</start>
<end>2016-03-25 11:54:00</end>
<name>芈月传</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 11:54:00</start>
<end>2016-03-25 12:00:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 12:00:00</start>
<end>2016-03-25 12:58:00</end>
<name>特别关注</name>
<type>法制/社会</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 12:58:00</start>
<end>2016-03-25 13:00:00</end>
<name>午间气象服务</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 13:00:00</start>
<end>2016-03-25 13:08:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 13:08:00</start>
<end>2016-03-25 13:53:00</end>
<name>猎人</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 13:53:00</start>
<end>2016-03-25 14:01:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 14:01:00</start>
<end>2016-03-25 14:44:00</end>
<name>猎人</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 14:44:00</start>
<end>2016-03-25 14:52:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 14:52:00</start>
<end>2016-03-25 15:35:00</end>
<name>猎人</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 15:35:00</start>
<end>2016-03-25 15:44:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 15:44:00</start>
<end>2016-03-25 16:27:00</end>
<name>猎人</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 16:27:00</start>
<end>2016-03-25 16:35:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 16:35:00</start>
<end>2016-03-25 17:20:00</end>
<name>暖暖的味道精华版</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 17:20:00</start>
<end>2016-03-25 17:25:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 17:25:00</start>
<end>2016-03-25 18:25:00</end>
<name>养生堂</name>
<type>健康</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 18:25:00</start>
<end>2016-03-25 18:30:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 18:30:00</start>
<end>2016-03-25 18:55:00</end>
<name>北京新闻</name>
<type>时政</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 18:55:00</start>
<end>2016-03-25 19:00:00</end>
<name>天气预报</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 19:00:00</start>
<end>2016-03-25 19:30:00</end>
<name>转播中央台新闻联播</name>
<type>时政</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 19:30:00</start>
<end>2016-03-25 19:33:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 19:33:00</start>
<end>2016-03-25 20:18:00</end>
<name>猎人</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 20:18:00</start>
<end>2016-03-25 20:22:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 20:22:00</start>
<end>2016-03-25 21:07:00</end>
<name>猎人</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 21:07:00</start>
<end>2016-03-25 21:09:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 21:09:00</start>
<end>2016-03-25 21:11:00</end>
<name>大剧抢先看</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 21:11:00</start>
<end>2016-03-25 21:12:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 21:12:00</start>
<end>2016-03-25 22:42:00</end>
<name>二胎时代</name>
<type></type>
<summary></summary>
</program>
<program>
<start>2016-03-25 22:42:00</start>
<end>2016-03-25 22:46:00</end>
<name>广宣时段</name>
<type>生活服务</type>
<summary></summary>
</program>
<program>
<start>2016-03-25 22:46:00</start>
<end>2016-03-26 00:16:00</end>
<name>二胎时代</name>
<type></type>
<summary></summary>
</program>
</channel>
</epg>