做微博长图的网站,如何做网站首页,阿里云网站备案登陆,中国传统色彩网站建设方案用ASP.NET创建网络相册 在现在的数码时代#xff0c;我们会经常拍摄一些相片以供留念#xff0c;而随着数码照片的增多#xff0c;往往需要很好地管理这些照片#xff0c;以便更好地查阅留念。现在网上有不少的电子相册#xff0c;都能很好的实现这些功能#xff0c;那我… 用ASP.NET创建网络相册 在现在的数码时代我们会经常拍摄一些相片以供留念而随着数码照片的增多往往需要很好地管理这些照片以便更好地查阅留念。现在网上有不少的电子相册都能很好的实现这些功能那我们能否自己动手创建自己的相册呢当然可以在这篇文章中我们将利用asp.net来创建一个简单的在线相册以收藏我们的照片。 首先来看下这个相册有哪些功能。在这个相册中我们必须先把预先摄影好的照片放到一个目录下去之后可以供在网上使用“上一张下一张”的链接一张张地查看。 下面先介绍如何获得文件夹中的图片。我们可以使用System.IO命名空间中的DirectoryInfo类来实现。将文件夹所在的路径做为参数传递到该类的构造函数中并声明一个DirectoryInfo类的实例。DirectoryInfo类中有一个GetFiles()的方法会返回FileInfo的对象数组而每一个FileInfo的实例将包含指定路径下文件的具体信息。下面的代码片段说明了该过程 Sub Page_Load(sender as Object, e as EventArgs) Get list of images Dim dirInfo as New DirectoryInfo(Server.MapPath()) Dim images() as FileInfo FilterForImages(dirInfo.GetFiles()) ...End Sub 其中用Server.mappath获得当前目录的路径而dirinfo.getfiles()将会返回该目录下的所有文件。而由于我们的是相册只需要看到比如JPGBMPGIF等图象文件所以我们可以通过程序实现只装载这些类型的文件这通过一个自定义的过程FilterForImages来实现该过程将只返回指定文件夹中图象类型的文件。代码如下Function FilterForImages(images() as FileInfo) as FileInfo() Dim newImages as New ArrayList(images.Length) Dim i as Integer For i 0 to images.Length - 1 If Path.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)) End If Next Return CType(newImages.ToArray(GetType(FileInfo)), FileInfo())End Function 该过程对于传递进来的FileInfo参数数组进行遍历对文件夹中的文件的后缀名进行叛断如果属于图象文件则添加到newimages数组中去并以arraylist形式返回。 接下来我们看下如何显示每一张图片并以“上一张下一张”来显示。为了知道当前浏览的是第几张图片可以通过使用传递参数的方法来实现。先往窗体中添加一个image控件和文本框程序代码如下Sub Page_Load(sender as Object, e as EventArgs) ... Dim imgIndex as Integer 0 If Not Request.QueryString(N) is Nothing AndAlso _ IsNumeric(Request.QueryString(N)) then imgIndex CInt(Request.QueryString(N)) End If currentImgTitle.Text You are Viewing: _ Path.GetFileNameWithoutExtension(images(imgIndex).Name) _ ( imgIndex 1 of images.Length ) currentImg.ImageUrl Path.GetFileName(images(imgIndex).Name) ...End Sub HTML部分代码asp:Label runatserver idcurrentImgTitle /br /asp:Image runatserver idcurrentImg / 在上面的代码中使用变量imgindex来表示当前浏览的是第几张图片刚开始时候N0则获得images数组中的第一个变量也即第一张图片之后每次读取该变量值则可以知道当前浏览的是第几张图片。 而为了实现“下一张上一张”的功能往窗体增加两个Hyperlink链接控件并添加以下代码Sub Page_Load(sender as Object, e as EventArgs)...If imgIndex 0 then lnkPrev.NavigateUrl Default.aspx?N imgIndex - 1End IfIf imgIndex images.Length - 1 then lnkNext.NavigateUrl Default.aspx?N imgIndex 1End If... End Sub HTML 部分代码asp:HyperLink runatserver idlnkPrev Text Previous / |asp:HyperLink runatserver idlnkNext TextNext / 上面代码比较容易理解当点下一张上一张的链接时参数N的值加1或者减1。 最后为了实现比较直观的效果我们放置一个datalist控件其中显示图象文件夹下的所有文件每当浏览一张新的图片时则将当前正在浏览的图片的名称以链接的形式加亮显示代码如下Sub Page_Load(sender as Object, e as EventArgs) ... dlIndex.DataSource images dlIndex.DataBind()End SubSub dlIndex_ItemDataBound(sender as Object, e as DataListItemEventArgs) If e.Item.ItemType ListItemType.Item OrElse _ e.Item.ItemType ListItemType.AlternatingItem then Get the Hyperlink Dim hl as HyperLink CType(e.Item.FindControl(lnkPic), HyperLink) Set the Text and Navigation properties 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 End IfEnd Sub HTML部分代码asp:DataList runatserver iddlIndex OnItemDataBounddlIndex_ItemDataBoundRepeatColumns3ItemTemplateliasp:HyperLink runatserver idlnkPic //li/ItemTemplate/asp:DataList 在上面的代码中在DATALIST的onitemdatabound事件中首先判断当前触发的项目是否是列表项listitemtype或者是交替项AlternatingItem如果是的话则动态生成链接hl,设置hl的值为当前正在浏览图象的文件名并且注明了文件的大小设置其链接的地址为当前浏览图象的地址这样用户可以直接点要浏览的图片了不一要通过上一张下一张的链接来实现。 最后给出运行的一个例子http://aspnet.4guysfromrolla.com/London/和全部代码% Import NamespaceSystem.IO %script runatserver languageVBSub Page_Load(sender as Object, e as EventArgs) Dim dirInfo as New DirectoryInfo(Server.MapPath()) Dim images() as FileInfo FilterForImages(dirInfo.GetFiles()) Dim imgIndex as Integer 0 If Not Request.QueryString(N) is Nothing AndAlso IsNumeric(Request.QueryString(N)) then imgIndex CInt(Request.QueryString(N)) End If currentImgTitle.Text You are Viewing: _ Path.GetFileNameWithoutExtension(images(imgIndex).Name) _ ( imgIndex 1 of images.Length ) currentImg.ImageUrl Path.GetFileName(images(imgIndex).Name) If imgIndex 0 then lnkPrev.NavigateUrl Default.aspx?N imgIndex - 1 End If If imgIndex images.Length - 1 then lnkNext.NavigateUrl Default.aspx?N imgIndex 1 End If dlIndex.DataSource images dlIndex.DataBind()End SubFunction FilterForImages(images() as FileInfo) as FileInfo() Dim newImages as New ArrayList(images.Length) Dim i as Integer For i 0 to images.Length - 1 If Path.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)) End If Next Return CType(newImages.ToArray(GetType(FileInfo)), FileInfo())End FunctionSub dlIndex_ItemDataBound(sender as Object, e as DataListItemEventArgs) If e.Item.ItemType ListItemType.Item OrElse e.Item.ItemType ListItemType.AlternatingItem then Dim hl as HyperLink 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 End IfEnd Sub/scriptHTMLHEAD STYLE TYPEtext/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/HEADBODYcenterasp:Label runatserver idcurrentImgTitle CssClassImageTitle /br /asp:Image runatserver idcurrentImg /asp:HyperLink runatserver CssClassNavLink idlnkPrev Text Previous / |asp:HyperLink runatserver CssClassNavLink idlnkNext TextNext /asp:DataList runatserver iddlIndex OnItemDataBounddlIndex_ItemDataBoundRepeatColumns3 CssClassindexItemTemplateliasp:HyperLink runatserver idlnkPic //li/ItemTemplate/asp:DataList/center/BODY/HTML 转载于:https://www.cnblogs.com/luyongqun/archive/2007/02/05/641355.html