- 浏览: 7834540 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
在asp.net 2.0中,可以结合dhtml来实现在用户上传完一个文件后,再点“继续上传”,而动态增加上传文件框
首先是前台的页面
<script language="javascript" type="text/javascript">
function addFile(max)
{
var file = document.getElementsByName("File");
if(file.length == 1 && file[0].disabled == true)
{
file[0].disabled = false;
return;
}
if(file.length < max)
{
var filebutton = '<br /><input type="file" size="50" name="File" class="Button" />';
document.getElementById('FileList').insertAdjacentHTML("beforeEnd",filebutton);
}
}
</script>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<table class="Text" border="0" cellpadding="3" bgcolor="Black" cellspacing="1">
<tr bgcolor="white">
<td>所属分类:</td>
<td width="90%">
<asp:DropDownList ID="ddlCategory" runat="server" SkinID="ddlSkin" Width="336px"></asp:DropDownList>
</td>
</tr>
<tr bgcolor="white">
<td valign="top">选择照片:</td>
<td width="90%">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top">
<p id="FileList"><input type="file" disabled="disabled" size="50" name="File" class="Button" /></p>
</td>
<td valign="top"><input type="button" value='增加一张照片' class="Button" onclick="addFile(<%= MAXPHOTOCOUNT %>)" /><font color="red">(最多上传 <%=MAXPHOTOCOUNT%> 张照片)</font><br /> 单击此按钮增加一个上传照片按钮。如果文件的名称或者内容为空,则不上传该照片。</td>
</tr>
</table>
</td>
</tr>
<tr bgcolor="white">
<td> </td>
<td width="90%">
<asp:Button ID="btnCommit" runat="server" Text="提交" SkinID="btnSkin" Width="100px" OnClick="btnCommit_Click" /> <asp:Label ID="lbMessage" runat="server" CssClass="Text" ForeColor="Red"></asp:Label>
</td>
</tr>
</table>
这里使用了一个javascript,来动态生成多个上传文件框,注意这里用了一个DHTML的函数insertAdjacentHTML,用法如下
加html内容(insertAdjacentHTML和insertAdjacentText)
dhtml提供了两个方法来进行添加,insertAdjacentHTML和insertAdjacentText
insertAdjacentHTML方法:在指定的地方插入html标签语句。
原型:insertAdjacentHTML(swhere,stext)
参数:
swhere:指定插入html标签语句的地方,有四种值可以用:
1.beforeBegin:插入到标签开始前
2.afterBegin:插入到标签开始标记后
3.beforeEnd:插入到标签结束标记前
4.afterEnd:插入到标签结束标记后
stext:要插入的内容
例:var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>"
var sScript='<SCRIPT DEFER>'
sScript = sScript + 'function go2(){ alert("Hello from inserted script.") }'
sScript = sScript + '</script' + '>';
ScriptDiv.insertAdjacentHTML("afterBegin",sHTML + sScript);
在html正文中加入一行:
<DIV ID="ScriptDiv"></Div>
最终变成:
<DIV ID="ScriptDiv">
<input type=button onclick=go2() value='Click Me'><BR>
<SCRIPT DEFER>
function go2(){alert("Hello from inserted sctipt.")}'
</script>
</DIV>
insertAdjacentText方法与insertAdjacentHTML方法类似,只不过只能插入纯文本,参数相同
接下来就可以用FOR循环去处理了
protected void btnCommit_Click(object sender,EventArgs e)
{
if(ddlCategory.SelectedIndex <= 0) return;
///获取上载文件的列表
HttpFileCollection fileList = HttpContext.Current.Request.Files;
if(fileList == null) return;
Album album = new Album();
try
{ ///上载文件列表中的每一个文件
for(int i = 0; i < fileList.Count; i++)
{ ///获取当前上载的文件
HttpPostedFile postedFile = fileList[i];
if(postedFile == null) continue;
///获取上载文件的文件名称
string fileName = Path.GetFileNameWithoutExtension(postedFile.FileName);
string extension = Path.GetExtension(postedFile.FileName);
if(string.IsNullOrEmpty(extension) == true) continue;
///判断文件是否合法
bool isAllow = false;
foreach(string ext in AjaxAlbumSystem.ALLOWPHOTOFILELIST)
{
if(ext == extension.ToLower())
{
isAllow = true;
break;
}
}
if(isAllow == false) continue;
///获取基于时间的文件名称
string timeFilename = AjaxAlbumSystem.CreateDateTimeString();
///获取保存在数据库中的URL
string url = "Photoes/" + timeFilename + extension;
///获取全路径
string fullPath = Server.MapPath(url);
///上载文件
postedFile.SaveAs(fullPath);
///添加文件到数据库中
album.AddPhoto(fileName,url,postedFile.ContentType,postedFile.ContentLength,
Int32.Parse(ddlCategory.SelectedValue));
}
}
catch(Exception ex)
{ ///显示上载文件的操作失败消息
lbMessage.Text = "上载文件错误,错误原因为:" + ex.Message;
return;
}
首先是前台的页面
<script language="javascript" type="text/javascript">
function addFile(max)
{
var file = document.getElementsByName("File");
if(file.length == 1 && file[0].disabled == true)
{
file[0].disabled = false;
return;
}
if(file.length < max)
{
var filebutton = '<br /><input type="file" size="50" name="File" class="Button" />';
document.getElementById('FileList').insertAdjacentHTML("beforeEnd",filebutton);
}
}
</script>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<table class="Text" border="0" cellpadding="3" bgcolor="Black" cellspacing="1">
<tr bgcolor="white">
<td>所属分类:</td>
<td width="90%">
<asp:DropDownList ID="ddlCategory" runat="server" SkinID="ddlSkin" Width="336px"></asp:DropDownList>
</td>
</tr>
<tr bgcolor="white">
<td valign="top">选择照片:</td>
<td width="90%">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top">
<p id="FileList"><input type="file" disabled="disabled" size="50" name="File" class="Button" /></p>
</td>
<td valign="top"><input type="button" value='增加一张照片' class="Button" onclick="addFile(<%= MAXPHOTOCOUNT %>)" /><font color="red">(最多上传 <%=MAXPHOTOCOUNT%> 张照片)</font><br /> 单击此按钮增加一个上传照片按钮。如果文件的名称或者内容为空,则不上传该照片。</td>
</tr>
</table>
</td>
</tr>
<tr bgcolor="white">
<td> </td>
<td width="90%">
<asp:Button ID="btnCommit" runat="server" Text="提交" SkinID="btnSkin" Width="100px" OnClick="btnCommit_Click" /> <asp:Label ID="lbMessage" runat="server" CssClass="Text" ForeColor="Red"></asp:Label>
</td>
</tr>
</table>
这里使用了一个javascript,来动态生成多个上传文件框,注意这里用了一个DHTML的函数insertAdjacentHTML,用法如下
加html内容(insertAdjacentHTML和insertAdjacentText)
dhtml提供了两个方法来进行添加,insertAdjacentHTML和insertAdjacentText
insertAdjacentHTML方法:在指定的地方插入html标签语句。
原型:insertAdjacentHTML(swhere,stext)
参数:
swhere:指定插入html标签语句的地方,有四种值可以用:
1.beforeBegin:插入到标签开始前
2.afterBegin:插入到标签开始标记后
3.beforeEnd:插入到标签结束标记前
4.afterEnd:插入到标签结束标记后
stext:要插入的内容
例:var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>"
var sScript='<SCRIPT DEFER>'
sScript = sScript + 'function go2(){ alert("Hello from inserted script.") }'
sScript = sScript + '</script' + '>';
ScriptDiv.insertAdjacentHTML("afterBegin",sHTML + sScript);
在html正文中加入一行:
<DIV ID="ScriptDiv"></Div>
最终变成:
<DIV ID="ScriptDiv">
<input type=button onclick=go2() value='Click Me'><BR>
<SCRIPT DEFER>
function go2(){alert("Hello from inserted sctipt.")}'
</script>
</DIV>
insertAdjacentText方法与insertAdjacentHTML方法类似,只不过只能插入纯文本,参数相同
接下来就可以用FOR循环去处理了
protected void btnCommit_Click(object sender,EventArgs e)
{
if(ddlCategory.SelectedIndex <= 0) return;
///获取上载文件的列表
HttpFileCollection fileList = HttpContext.Current.Request.Files;
if(fileList == null) return;
Album album = new Album();
try
{ ///上载文件列表中的每一个文件
for(int i = 0; i < fileList.Count; i++)
{ ///获取当前上载的文件
HttpPostedFile postedFile = fileList[i];
if(postedFile == null) continue;
///获取上载文件的文件名称
string fileName = Path.GetFileNameWithoutExtension(postedFile.FileName);
string extension = Path.GetExtension(postedFile.FileName);
if(string.IsNullOrEmpty(extension) == true) continue;
///判断文件是否合法
bool isAllow = false;
foreach(string ext in AjaxAlbumSystem.ALLOWPHOTOFILELIST)
{
if(ext == extension.ToLower())
{
isAllow = true;
break;
}
}
if(isAllow == false) continue;
///获取基于时间的文件名称
string timeFilename = AjaxAlbumSystem.CreateDateTimeString();
///获取保存在数据库中的URL
string url = "Photoes/" + timeFilename + extension;
///获取全路径
string fullPath = Server.MapPath(url);
///上载文件
postedFile.SaveAs(fullPath);
///添加文件到数据库中
album.AddPhoto(fileName,url,postedFile.ContentType,postedFile.ContentLength,
Int32.Parse(ddlCategory.SelectedValue));
}
}
catch(Exception ex)
{ ///显示上载文件的操作失败消息
lbMessage.Text = "上载文件错误,错误原因为:" + ex.Message;
return;
}
发表评论
-
.NET 嵌入式版4.2发布:关键更新抢先看
2012-02-22 14:57 1831作为.NET家族的一员,.Net Micro Framewor ... -
asp.net中模拟测试smtp发信
2011-03-20 18:47 1873在asp.net 中,有时要测试发信SMTP,但如果在单元测试 ... -
vs.net 2010两个数据库方面的好工具
2011-02-14 11:47 1843今天发现vs.net 2010在处理数据库方面的两个不错的工具 ... -
将gridview导出到excel,world,pdf的小结
2011-02-07 22:47 2946下面小结下把gridview的数据导出到excel,world ... -
gridviewtips1:gridview的页脚中的加亮显示和页数显示
2011-01-27 09:58 2350在asp.net 中,要经常显示gridview中的页数,并且 ... -
asp.net 4中的HTML过滤的一个新特性
2011-01-21 09:47 1852在asp.net 4中,有个新增加的对HTML过滤,防止XSS ... -
在vs.net 2010中使用重构方法
2011-01-20 16:55 2149在vs.net 2010中,可以很方便地对一些冗余的代码进行重 ... -
一个比较好的.net 3.5的异常报告类
2011-01-10 14:51 1946发现了一个比较好的异常报告类,其中用到了.net 3.5以上的 ... -
asp.net 4.0中menu菜单的改进
2011-01-03 22:47 2568在asp.net 3.5时,如果用menucontrol时,使 ... -
asp.net 4中的新特性之一:控制URL长度
2010-09-14 23:06 2385asp.net 4中的新特性之一:控制URL长度。在ASP.N ... -
vs.net 2010中使用code snippets
2010-09-09 20:58 1567其实在vs.net 2010中,使用code snippets ... -
百万开发者拥戴!七大.NET著名开源项目
2010-09-07 09:42 2280新翻译了篇帖子,原文发表在 http://publish.i ... -
asp.net 2010中jquery调用webservice
2010-08-30 22:21 2750在asp.net 2010中,在建立web应用时,默认已经在s ... -
.net中的placeholder控件
2005-01-15 20:00 1914最近留意到有人问,NET中的placeholder控件用来做什 ... -
asp.net 中一次性更新DATAGRID中所有记录
2005-01-15 20:03 937在asp.net中,如何一次性 ... -
在asp.net 中实现只允许数字输入的文本框
2005-01-15 20:18 1487在asp.net 中实现只允许数字输入的文本框,其实是十分简单 ... -
一个重构代码的小技巧
2005-01-16 21:58 1132刚开始接触重构,听就听的多了,理论没认真看过,不过今天发现,将 ... -
防止SQL注入攻击
2005-02-05 14:42 1138看了本期ASP。NET杂志里的一篇讲防止SQL注入攻击的文章, ... -
优秀.net 控件包介绍
2005-02-18 19:47 1668在oday上看到得,将介绍摘录在这里 NetAdvantage ... -
vs.net 2005中的ConfigurationManager
2005-05-06 18:11 1621vs.net 2005中的ConfigurationManag ...
相关推荐
● 浏览一个由ASP.NET 2.0构建的站点的动态功能 ● 理解创建ASP.NET 2.0页面(ASPX)将要使用的工具—— Visual Web Developer Express(VWD) 。。。。。。 目录: 目录: 第1章 ASP.NET 2.0和Wrox United 应用程序...
ASP.NET中类的数量翻了一倍还多,而且这个版本还包含50多个新的服务器控件。本书介绍这些新技术,除了论述这些新主题外,还列举了它们的例子。 本书在全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述...
ASP.NET 2.0在Web应用程序开发方面迈出了革命性的一步,新增了50多个服务器控件,类的数量也增加了一倍,其他许多方面也有很重大的变化。ASP.NET 2.0的目标是提高开发人员的效率、改善应用程序的性能和可伸缩性。...
以前使用ASP.NET的第一个版本程序员需要花费几个小时才能做出的页面,现在使用ASP.NET 2.0只需要几分钟就完成了。简单来说,在.NET Framework 2.0最终版本发布之后,任何继续使用第一个版本创建ASP.NET页面的程序...
微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优...
Microsoft 在 ASP.NET 2.0 中引入大量的新功能,可将 ASP.NET 2.0 的目的归纳为一句话: 提高开发人员的生产率,并极大地减少开发人员必须编写的代码行数。许多常见任务只需几行 代码就能完成,甚至不需代码。 ...
ASP.NET第一步(基于C#和ASP.NET 2.0)的随书源码,包含了本书各章中出现的所有程序的源代码: 1.对于ASP.NET 2.0的网站项目,没有项目文件,直接使用IDE打开网站目录即可。 2.对于控制台应用程序或者包含多个...
一共33MB多。分了7个包。 微软技术丛书系列: asp.net 2.0技术内幕(中文版) 清华大学出版社
本书详细地介绍了ASE.NET 2.0新技术在Web开发方面的具体实现。通过自定义Provider模型说明...其中,“14”文件夹中提供了Access版本的Provider示例模型,beerhouse文件夹中是一个多项目解决方案示例代码,供大家参考。
ASP.NET 2.0新增了50多个新服务器控件,类的数量也翻了一倍,其他许多方面也有很大的变化。本书介绍了ASP.NET 2.0中的每个新增特性和功能,以便读者把这些新技术应用于实践。.. 本书主要内容 ● 服务器控件的...
本书介绍利用ASP.NET 2.0和SQL Server开发典型网络应用系统的必备知识,重点介绍ASP.NET 2.0的核心控件与使用方法,以及能够提高开发效率的.NET框架——NSpring、NHibernate等。针对现在热门的Web 2.0的开发,本书也...
ASP.NET 2.0新增了50多个新服务器控件,类的数量也翻了一倍,其他许多方面也有很大的变化。本书介绍了ASP.NET 2.0中的每个新增特性和功能,以便读者把这些新技术应用于实践。.. 本书主要内容 ● 服务器控件的...
ASP.NET 2.0新增了50多个新服务器控件,类的数量也翻了一倍,其他许多方面也有很大的变化。本书介绍了ASP.NET 2.0中的每个新增特性和功能,以便读者把这些新技术应用于实践。.. 本书主要内容 ● 服务器控件的...
在ASP.NET 2.0中操作数据:使用DataList来一行显示多条记录
ASP.NET中类的数量翻了一倍还多,而且这个版本还包含50多个新的服务器控件。本书介绍这些新技术,除了论述这些新主题外,还列举了它们的例子。 本书在全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述...
ASP.NET中类的数量翻了一倍还多,而且这个版本还包含50多个新的服务器控件。本书介绍这些新技术,除了论述这些新主题外,还列举了它们的例子。 本书在全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述...
ASP.NET中类的数量翻了一倍还多,而且这个版本还包含50多个新的服务器控件。本书介绍这些新技术,除了论述这些新主题外,还列举了它们的例子。 本书在全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述...
13.5.6 多个DataAdapter对象填充同一DataSet 233 13.5.7 将不同的查询填充到同一DataSet 235 13.5.8 合并DataSet 237 13.5.9 复制DataSet 240 13.6 配置应用程序 243 13.7 常见问题 244 13.7.1 介绍Connection对象时...
ASP.NET 2.0+SQL Server 2005全程指南 目录 基础篇 第1章 ASP.NET概述及环境配置 1.1 认识ASRNET 1.1.1 .NET Framework框架 1.1.2 ASP.NET功能与特性 1.1.3 ASP.NET与ASP的区别 1.2 搭建ASP.NET开发环境 1.2.1...