|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)java是开放的,相同的工具就会有很多公司在做,加上java已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。在如今的数码时期,我们会常常拍摄一些相片以供纪念,而跟着数码照片的增加,常常必要很好地办理这些照片,以便更好地查阅纪念。如今网上有很多的电子相册,都能很好的完成这些功效,那我们可否本人下手创立本人的相册呢?固然能够,在这篇文章中,我们将使用ASP.net,来创立一个复杂的在线相册,以保藏我们的照片。
起首来看下,这个相册有哪些功效。在这个相册中,我们必需先把事后拍照好的照片放到一个目次下往,以后,能够供在网上利用“上一张,下一张”的链接一张张地检察。
上面先先容怎样取得文件夹中的图片。我们可使用System.IO定名空间中的DirectoryInfo类来完成。将文件夹地点的路径做为参数传送到该类的机关函数中,并声明一个DirectoryInfo类的实例。DirectoryInfo类中有一个GetFiles()的办法,会前往FileInfo的工具数组,而每个FileInfo的实例将包括指定路径下文件的详细信息。上面的代码片断申明了该历程:
以下为援用的内容:
SubPage_Load(senderasObject,easEventArgs)
Getlistofimages
DimdirInfoasNewDirectoryInfo(Server.MapPath(""))
Dimimages()asFileInfo=FilterForImages(dirInfo.GetFiles())
...
EndSub
个中,用Server.mappath取得以后目次的路径,而dirinfo.getfiles()将会前往该目次下的一切文件。而因为我们的是相册,只必要看到好比JPG,BMP,GIF等图像文件,以是我们能够经由过程程序完成,只装载这些范例的文件,这经由过程一个自界说的历程FilterForImages来完成,该历程将只前往指定文件夹中图像范例的文件。代码以下:
以下为援用的内容:
FunctionFilterForImages(images()asFileInfo)asFileInfo()
DimnewImagesasNewArrayList(images.Length)
DimiasInteger
Fori=0toimages.Length-1
IfPath.GetExtension(images(i).Name)=".jpg"OrElse_
Path.GetExtension(images(i).Name)=".jpeg"OrElse_
Path.GetExtension(images(i).Name)=".png"OrElse_
Path.GetExtension(images(i).Name)=".gif"then
newImages.Add(images(i))
EndIf
Next
ReturnCType(newImages.ToArray(GetType(FileInfo)),FileInfo())
EndFunction
该历程关于传送出去的FileInfo参数数组举行遍历,对文件夹中的文件的后缀名举行叛断,假如属于图像文件,则增加到newimages数组中往,并以arraylist情势前往。
接上去,我们看下怎样显现每张图片,并以“上一张,下一张”来显现。为了晓得以后扫瞄的是第几张图片,能够经由过程利用传送参数的办法来完成。先往窗体中增加一个image控件和文本框,程序代码以下:
SubPage_Load(senderasObject,easEventArgs)
...
DimimgIndexasInteger=0
IfNotRequest.QueryString("N")isNothingAndAlso_
IsNumeric(Request.QueryString("N"))then
imgIndex=CInt(Request.QueryString("N"))
EndIf
currentImgTitle.Text="YouareViewing:"&_
Path.GetFileNameWithoutExtension(images(imgIndex).Name)&_
"("&imgIndex+1&"of"&images.Length&")"
currentImg.ImageUrl=Path.GetFileName(images(imgIndex).Name)
...
EndSub
HTML部分代码
<ASP:Labelrunat="server"id="currentImgTitle"/><br/>
<asp:Imagerunat="server"id="currentImg"/>
在下面的代码中,利用变量imgindex来暗示以后扫瞄的是第几张图片,刚入手下手时分N=0,则取得images数组中的第一个变量,也即第一张图片,以后每次读取该变量值,则能够晓得以后扫瞄的是第几张图片。
而为了完成“下一张,上一张”的功效,往窗体增添两个HyPerlink链接控件,并增加以下代码
以下为援用的内容:
SubPage_Load(senderasObject,easEventArgs)
...
IfimgIndex>0then
lnkPrev.NavigateUrl="Default.aspx?N="&imgIndex-1
EndIf
IfimgIndex<images.Length-1then
lnkNext.NavigateUrl="Default.aspx?N="&imgIndex+1
EndIf
...
EndSub
HTML部分代码
以下为援用的内容:
<asp:HyperLinkrunat="server"id="lnkPrev"Text="<Previous"/>|
<asp:HyperLinkrunat="server"id="lnkNext"Text="Next>"/>
下面代码对照简单了解,当点下一张,上一张的链接时,参数N的值加1,大概减1。
最初,为了完成对照直不雅的效果,我们安排一个datalist控件,个中显现图像文件夹下的一切文件,每当扫瞄一张新的图片时,则将以后正在扫瞄的图片的称号以链接的情势加亮显现,代码以下:
以下为援用的内容:
SubPage_Load(senderasObject,easEventArgs)
...
dlIndex.DataSource=images
dlIndex.DataBind()
EndSub
SubdlIndex_ItemDataBound(senderasObject,easDataListItemEventArgs)
Ife.Item.ItemType=ListItemType.ItemOrElse_
e.Item.ItemType=ListItemType.AlternatingItemthen
GettheHyperlink
DimhlasHyperLink=CType(e.Item.FindControl("lnkPic"),HyperLink)
SettheTextandNavigationproperties
hl.Text=Path.GetFileNameWithoutExtension(_
DataBinder.Eval(e.Item.DataItem,"Name").ToString())&_
"("&_
Int(DataBinder.Eval(e.Item.DataItem,"Length")/1000)&_
"KB)"
hl.NavigateUrl="Default.aspx?N="&e.Item.ItemIndex
EndIf
EndSub
HTML部分代码
以下为援用的内容:
<asp:DataListrunat="server"id="dlIndex"OnItemDataBound="dlIndex_ItemDataBound"
RepeatColumns="3">
<ItemTemplate>
<li><asp:HyperLinkrunat="server"id="lnkPic"/></li>
</ItemTemplate>
</asp:DataList>
在下面的代码中,在DATALIST的onitemdatabound事务中,起首判别以后触发的项目是不是是列表项listitemtype大概是瓜代项AlternatingItem,假如是的话,则静态天生链接hl,设置hl的值为以后正在扫瞄图像的文件名,而且说明了文件的巨细,设置其链接的地点为以后扫瞄图像的地点,如许,用户能够间接点要扫瞄的图片了,纷歧要经由过程上一张,下一张的链接来完成。
最初给出运转的一个例子和全体代码:
以下为援用的内容:
<%@ImportNamespace="System.IO"%>
<scriptrunat="server"language="VB">
SubPage_Load(senderasObject,easEventArgs)
DimdirInfoasNewDirectoryInfo(Server.MapPath(""))
Dimimages()asFileInfo=FilterForImages(dirInfo.GetFiles())
DimimgIndexasInteger=0
IfNotRequest.QueryString("N")isNothingAndAlsoIsNumeric(Request.QueryString("N"))then
imgIndex=CInt(Request.QueryString("N"))
EndIf
currentImgTitle.Text="YouareViewing:"&_
Path.GetFileNameWithoutExtension(images(imgIndex).Name)&_
"("&imgIndex+1&"of"&images.Length&")"
currentImg.ImageUrl=Path.GetFileName(images(imgIndex).Name)
IfimgIndex>0then
lnkPrev.NavigateUrl="Default.aspx?N="&imgIndex-1
EndIf
IfimgIndex<images.Length-1then
lnkNext.NavigateUrl="Default.aspx?N="&imgIndex+1
EndIf
dlIndex.DataSource=images
dlIndex.DataBind()
EndSub
FunctionFilterForImages(images()asFileInfo)asFileInfo()
DimnewImagesasNewArrayList(images.Length)
DimiasInteger
Fori=0toimages.Length-1
IfPath.GetExtension(images(i).Name)=".jpg"OrElse_
Path.GetExtension(images(i).Name)=".jpeg"OrElse_
Path.GetExtension(images(i).Name)=".png"OrElse_
Path.GetExtension(images(i).Name)=".gif"then
newImages.Add(images(i))
EndIf
Next
ReturnCType(newImages.ToArray(GetType(FileInfo)),FileInfo())
EndFunction
SubdlIndex_ItemDataBound(senderasObject,easDataListItemEventArgs)
Ife.Item.ItemType=ListItemType.ItemOrElsee.Item.ItemType= ListItemType.AlternatingItemthen
DimhlasHyperLink=CType(e.Item.FindControl("lnkPic"),HyperLink)
hl.Text=Path.GetFileNameWithoutExtension(DataBinder.Eval(e.Item.DataItem,"Name").ToString())&_
"("&Int(DataBinder.Eval(e.Item.DataItem,"Length")/1000)&"KB)"
hl.NavigateUrl="Default.aspx?N="&e.Item.ItemIndex
EndIf
EndSub
</script>
<HTML>
<HEAD>
<STYLETYPE="text/CSS">
body{font-family:Verdana;font-size:medium;}
.ImageTitle{font-weight:bold;font-size:large;}
.index{font-size:small;}
.NavLink{background-color:yellow;font-weight:bold;}
</STYLE>
</HEAD>
<BODY>
<center>
<asp:Labelrunat="server"id="currentImgTitle"CssClass="ImageTitle"/><br/>
<asp:Imagerunat="server"id="currentImg"/>
<asp:HyperLinkrunat="server"CssClass="NavLink"id="lnkPrev"Text="<Previous"/>|
<asp:HyperLinkrunat="server"CssClass="NavLink"id="lnkNext"Text="Next>"/>
<asp:DataListrunat="server"id="dlIndex"OnItemDataBound="dlIndex_ItemDataBound"
RepeatColumns="3"CssClass="index">
<ItemTemplate>
<li><asp:HyperLinkrunat="server"id="lnkPic"/></li>
</ItemTemplate>
</asp:DataList>
</center>
</BODY>
</HTML>
实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。 |
|