南汇大学城在线's Archiver

beida_01 发表于 2008-2-28 09:27

保存美丽记忆 用ASP.NET创建网络相册!

在现在的数码时代,我们会经常拍摄一些相片以供留念,而随着数码照片的增多,往往需要很好地管理这些照片,以便更好地查阅留念。现在网上有不少的电子相册,都能很好的实现这些功能,那我们能否自己动手创建自己的相册呢?当然可以,在这篇文章中,我们将利用asp.net,来创建一个简单的在线相册,以收藏我们的照片。

   首先来看下,这个相册有哪些功能。在这个相册中,我们必须先把预先摄影好的照片放到一个目录下去,之后,可以供在网上使用“上一张,下一张”的链接一张张地查看。

   下面先介绍如何获得文件夹中的图片。我们可以使用System.IO命名空间中的DirectoryInfo类来实现。将文件夹所在的路径做为参数传递到该类的构造函数中,并声明一个DirectoryInfo类的实例。DirectoryInfo类中有一个GetFiles()的方法,会返回 FileInfo的对象数组,而每一个FileInfo的实例将包含指定路径下文件的具体信息。下面的代码片段说明了该过程:
[url=http://www.027accp.com/][color=#0000ff]Sub[/color][color=#000000] Page_Load(sender [/color][color=#0000ff]as[/color]
[color=#0000ff]Object[/color][color=#000000], e [/color][color=#0000ff]as[/color][color=#000000] EventArgs)  [/color][color=#008000]'[/color][color=#008000]Get list of images[/color]
[color=#000000]  [/color][color=#0000ff]Dim[/color][color=#000000] dirInfo [/color][color=#0000ff]as[/color]
[color=#0000ff]New[/color][color=#000000] DirectoryInfo(Server.MapPath([/color][color=#000000]""[/color][color=#000000]))  [/color][color=#0000ff]Dim[/color][color=#000000] images() [/color][color=#0000ff]as[/color][color=#000000] FileInfo [/color][color=#000000]=[/color][color=#000000] FilterForImages(dirInfo.GetFiles())  ...[/color][color=#0000ff]End Sub[/color]


[/url]  其中,用Server.mappath获得当前目录的路径,而dirinfo.getfiles()将会返回该目录下的所有文件。而由于我们的是相册,只需要看到比如JPG,BMP,GIF等图象文件,所以我们可以通过程序实现,只装载这些类型的文件,这通过一个自定义的过程 FilterForImages来实现,该过程将只返回指定文件夹中图象类型的文件。代码如下:
[url=http://www.027accp.com/][color=#0000ff]Function[/color][color=#000000] FilterForImages(images() [/color][color=#0000ff]as[/color][color=#000000] FileInfo) [/color][color=#0000ff]as[/color][color=#000000] FileInfo()  [/color][color=#0000ff]Dim[/color][color=#000000] newImages [/color][color=#0000ff]as[/color]
[color=#0000ff]New[/color][color=#000000] ArrayList(images.Length) [/color][color=#0000ff]Dim[/color][color=#000000] i [/color][color=#0000ff]as[/color]
[color=#0000ff]Integer[/color][color=#000000]  [/color][color=#0000ff]For[/color][color=#000000] i [/color][color=#000000]=[/color]
[color=#000000]0[/color]
[color=#0000ff]to[/color][color=#000000] images.Length [/color][color=#000000]-[/color]
[color=#000000]1[/color][color=#000000]   [/color][color=#0000ff]If[/color][color=#000000] Path.GetExtension(images(i).Name) [/color][color=#000000]=[/color]
[color=#000000]"[/color][color=#000000].jpg[/color][color=#000000]"[/color]
[color=#0000ff]OrElse[/color][color=#000000] _    Path.GetExtension(images(i).Name) [/color][color=#000000]=[/color]
[color=#000000]"[/color][color=#000000].jpeg[/color][color=#000000]"[/color]
[color=#0000ff]OrElse[/color][color=#000000] _    Path.GetExtension(images(i).Name) [/color][color=#000000]=[/color]
[color=#000000]"[/color][color=#000000].png[/color][color=#000000]"[/color]
[color=#0000ff]OrElse[/color][color=#000000] _    Path.GetExtension(images(i).Name) [/color][color=#000000]=[/color]
[color=#000000]"[/color][color=#000000].gif[/color][color=#000000]"[/color]
[color=#0000ff]then[/color][color=#000000]     newImages.Add(images(i))   [/color][color=#0000ff]End[/color]
[color=#0000ff]If[/color][color=#000000]  [/color][color=#0000ff]Next[/color][color=#000000] [/color][color=#0000ff]Return[/color]
[color=#0000ff]CType[/color][color=#000000](newImages.ToArray([/color][color=#0000ff]GetType[/color][color=#000000](FileInfo)), FileInfo())[/color][color=#0000ff]End Function[/color]


[/url]  该过程对于传递进来的FileInfo参数数组进行遍历,对文件夹中的文件的后缀名进行叛断,如果属于图象文件,则添加到newimages数组中去,并以arraylist形式返回。
  接下来,我们看下如何显示每一张图片,并以“上一张,下一张”来显示。为了知道当前浏览的是第几张图片,可以通过使用传递参数的方法来实现。先往窗体中添加一个image控件和文本框,程序代码如下:
[url=http://www.027accp.com/][color=#0000ff]Sub[/color][color=#000000] Page_Load(sender [/color][color=#0000ff]as[/color]
[color=#0000ff]Object[/color][color=#000000], e [/color][color=#0000ff]as[/color][color=#000000] EventArgs)  ... [/color][color=#008000]'[/color][color=#008000] Dim imgIndex as Integer = 0[/color]
[color=#000000]  [/color][color=#0000ff]If[/color]
[color=#0000ff]Not[/color][color=#000000] Request.QueryString([/color][color=#000000]"[/color][color=#000000]N[/color][color=#000000]"[/color][color=#000000]) [/color][color=#0000ff]is[/color]
[color=#0000ff]Nothing[/color]
[color=#0000ff]AndAlso[/color][color=#000000] _   [/color][color=#0000ff]IsNumeric[/color][color=#000000](Request.QueryString([/color][color=#000000]"[/color][color=#000000]N[/color][color=#000000]"[/color][color=#000000])) [/color][color=#0000ff]then[/color][color=#000000]    imgIndex [/color][color=#000000]=[/color]
[color=#0000ff]CInt[/color][color=#000000](Request.QueryString([/color][color=#000000]"[/color][color=#000000]N[/color][color=#000000]"[/color][color=#000000]))  [/color][color=#0000ff]End[/color]
[color=#0000ff]If[/color][color=#000000]   currentImgTitle.Text [/color][color=#000000]=[/color]
[color=#000000]"[/color][color=#000000]You are Viewing: [/color][color=#000000]"[/color]
[color=#000000]&[/color][color=#000000] _   Path.GetFileNameWithoutExtension(images(imgIndex).Name) [/color][color=#000000]&[/color][color=#000000] _   [/color][color=#000000]"[/color][color=#000000] ([/color][color=#000000]"[/color]
[color=#000000]&[/color][color=#000000] imgIndex [/color][color=#000000]+[/color]
[color=#000000]1[/color]
[color=#000000]&[/color]
[color=#000000]"[/color][color=#000000] of [/color][color=#000000]"[/color]
[color=#000000]&[/color][color=#000000] images.Length [/color][color=#000000]&[/color]
[color=#000000]"[/color][color=#000000])"[/color]
[color=#000000]    currentImg.ImageUrl [/color][color=#000000]=[/color][color=#000000] Path.GetFileName(images(imgIndex).Name)    ...[/color][color=#0000ff]End Sub[/color]


[/url]详情请进入:[url=http://www.027accpc.com/]http://www.027accpc.com[/url]

冰山的角落 发表于 2008-5-24 07:45

好想有点麻烦

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.