对博客里的相册不太满意,一直在想寻找个不错的相册,可惜见过很棒的相册空间都用不了。
记得很久以前看到的一个FPV的flash相册很漂亮,而且pj论坛里也好像见有人用。昨晚在戒聊斑竹的博客再次看到这个相册,一时兴起,想给相册换一下面孔。
于是到处搜索FPV4相册,找了几个来对比,然后修改、整理成插件模式、本地测试……
可恶的是FPV相册使用中文命名时保存的XML信息总是出错,弄来弄去地调试、测试、传照片……整了大半夜,最后终于本地测试比较满意了,可是上传到空间,才发现由于空间的组件不支持(和采集相关的XMLDOM),导致读取保存xml信息总是失败,而前台浏览图片调用也总是意料之中的出错。一个晚上的努力,就这样等于白费了(其实没测试时就有点担心这个问题的,因为空间xmldom组件的原因很多功能都用不了)!一时无奈之下,只能就这样关机睡觉了,此时已早上六点钟……
FPV相册需要用到的两个关键组件为:
Microsoft.XMLDOM 组件
ADODB.Stream 组件
在此以个人的经历教训,提醒需要用到这个相册的朋友应该注意一下。
不过既然整了这个相册来,也不能就浪费了。自己用不了,就提供出来供能用的朋友下载试用好了:
FPV4相册破解版FORPJBLOG下载(网盘下载):
说明:
插件安装即可使用,自己根据主题界面等调节设置
登陆账号:lzw.me
密码:lzw.me
修改账号密码配置文件:(到 fpv_adminMyConfig.asp 文件内修改密码)
注:
其中添加了一个myphoto.asp文件,使用这个文件,直接放在网站程序的根目录,即可直接访问相册无需插件安装。
附录:
xmldom组件说明文档:
该组件是一般网站采集程序的关键组件
XMLDOM是用来访问和操作XML文档的编程接口规范。XMLDOM被设计为可用于任何语言和任何操作系统。借助DOM,程序员可以创建XML文档、遍历其结构,增、改、删其元素。DOM将整个XML文档视作一棵树,文档级的元素是树的根。
XMLDOM包含四个主要对象:
XMLDOMDocument
XMLDOMNode
XMLDOMNodeList
XMLDOMNamedNodeMap
每个XMLDOM对象有其自己的特性和方法。
我们主要学习XMLDOMDocument对象
XMLDOMDocument对象代表XML DOM层次中的顶层结点(请不要同XML文档中的根结点混淆)。它是建立和操纵XML结构的基础。
为了创建XMLDOMDocument对象变量,请使用如下的CreateObject 命令:
Set objXMLdoc = CreateObject(“Microsoft.XMLDOM”)
方法 描述
CreateAttribute 创建新属性
CreateCDATASection 创建DATA 部分结点
CreateComment 创建注释结点
CreateElement 使用指定名称创建元素结点
CreateEntityReference 创建实体参考对象
CreateNode 创建结点
CreateTextNode 创建文本结点
Load 载入已有的 XML 文档
Save 保存XML 文档
属性 描述
PreserveWhiteSpace 指示是否在XML文档中显示空格t
ResolveExternals 解析名域,DTD和外部实体索引
ValidateOnParse 指示解析器是否对文档进行合法性检查
DocumentElement 返回XML 文档的根结点
[1]创建结点———————————-
XMLDOMDocument对象提供了创建结点或者XMLDOMNode的两种方法:
CreateElement 和CreateNode。选择其中哪一种方法,取决于你需要结点提供信息量的多少。
当你使用CreateElement 方法时,只要提供结点名称,如
Set objXMLroot = objXMLdoc.CreateElement(“ORDER_STATUS”)
当使用CreateNode 方法时,你要指定结点类型,结点名称和相关名域。(XML名域可以让你择同一文档中用同一名称创建多个XML元素)
基本语法:xmlDocument.createNode(type, name, nameSpaceURI)
type 用来确认要被建立的节点形态
name 是一个字符串来确认新节点的名称,命名空间的前缀则是选择性的
nameSpaceURI 是一个定义命名空间URI 的字符串
如果前缀被包含在名称参数中,此节点会在nameSpaceURI 的内文中以指定的前缀建立。
如果不包含前缀,指定的命名空间会被视为预设的命名空间。
例如,如果要使用CreateNode方法,你可写出如下代码:
Set objXMLroot = objXMLdoc.createNode(“element”,”ORDER_STATUS”,”Space1”)
一旦创建了结点,你须把它添加进XML文档中。这就要用AppendChild 方法
例如,继续上面的例子,你可以写出:
objXMLdoc.AppendChild(objXMLroot) 该语句创建了XML根结点。
XMLDOMNode 对象也具有其它三个控制XML结点的方法: ReplaceChild, RemoveChild和InsertBefore
[2]对结点的属性赋值———————————-
一旦创建了结点,还要对其属性赋值,如独立的标识符,或者特性值。你要用到SetAttribute方法。
该方法接收两个参数:属性名和属性值。
例如,下列代码创建了属性名SHIPPING_DATASOURCE和属性值NORTH_ATLANTIC_SHIPPING:
objXMLroot.SetAttribute “SHIPPING_DATASOURCE”,”NORTH_ATLANTIC_SHIPPING
[3]加入子结点———————————-
要创建子结点,你可以使用我们前面介绍的CreateElement或者 CreateNode 方法,然后把它们添加到合适的父母结点中。
例如,假设,我们要创建称为PUBLISHER_DISCLAIMER的XML结点。为了做到这一点,我们把该结点附加到文档的根结点中,代码如下:
Set objXMLChildTestNode = objXMLdoc.createNode(“element”,”PUBLISHER_DISCLAIMER”,””)
objXMLdoc.DocumentElement.appendChild (objXMLChildTestNode)
注意:我们使用了XMLDOMDocument的 DocumentElement 特性来把新结点添加到XML文档的根结点中。
[4]给结点赋值———————————-
一旦创建完所有的结点,你将需要给它们赋值。那是XML最关键的步骤。要做到这点,你同平常一样,创建一个结点,然后对该结点
的TEXT属性赋值。例如,下列代码创建了称为PUBLISHED_DATE的XML结点,然后赋值如下:
Set objPublishDate = objXMLdoc.CreateNode(“element”,”PUBLISHED_DATE”, “”)
dShippedDate = FormatDateTime(Date, 2)
objPublishDate.Text = dShippedDate
objXMLChildTestNode.appendChild(objPublishDate)
[5]createProcessingInstruction 方法
建立一个新的处理指令,包含了指定的目标和数据
基本语法:xmlDocument.createProcessingInstruction(target, data)
target 是表示目标、名称或处理指令的字符串。Data 是表示处理指令的值。一个新的处理指令被建立,但是并没有加到文件树中。
要把处理指令加到文件树中,必须使用插入方法,例如:insertBefore、replaceChild,或是appendChild。
例如:set objNewPI =xmlDoc.createProcessingInstruction(‘XML’, ‘version=”1.0″’)
objDom.insertBefore objPI, objDom.childNodes(0)
[6]生成xml文件
基本语法:objDom.Save(“asd.xml”)
XML DOM介绍、例子以及Microsoft.xmldom api文档
1.文档对象模型(DOM)
DOM是HTML和XML文档的编程基础,它定义了处理执行文档的途径。编程者可以使用DOM增加文档、定位文档结构、填加修改删除文档元素。W3C的重要目标是把利用DOM提供一个使用于多个平台的编程接口。W3C DOM被设计成适合多个平台,可使用任意编程语言实现的方法。
2.节点接口
XML parser用来装载XML文档到缓存中,文档装载时,可以使用DOM进行检索和处理。DOM采用树形结构表示XML文档,文档元素是树的最高阶层,该元素有一个或多个孩子节点用来表示树的分枝。
节点接口程序通常用来读和写XML节点树中的个别元素,文档元素的孩子节点属性可以用来构造个别元素节点。XML parser用来证明Web中的DOM支持遍历节点树的所有函数,并可通过它们访问节点和及其属性、插入删除节点、转换节点树到XML中。
所有Microsoft XML parser函数得到W3C XML DOM的正式推荐,除了load和loadXML函数(正式的DOM不包括标准函数loading XML文档)。有13个节点类型被Microsoft XML parser支持,下面列出常用节点:
节点类型例子
Document type
Processing instruction
Element
Attribute type=”beer”
Text Carlsberg
3.使用XML parser
为了更加熟练的处理XML文档,必须使用XML parser。Microsoft XML parser是IIS5.0所带的一个COM组件,一旦安装了IIS5.0,parser可以利用HTML文档和ASP文件中的脚本。
Microsoft XMLDOM parser支持以下编程模式:
—-支持Javascript, VBscript, Perl, VB, Java, C++ 等等
—-支持W3C XML 1.0 和XML DOM
—-支持DTD 和validation
如果使用IE5.0中的Javascript,可以使用下面的XML文档对象:
var xmlDoc = new ActiveXObject(”Microsoft.XMLDOM”)
如果使用VBscript,可以使用下面的XML文档对象:
set xmlDoc = CreateObject(”Microsoft.XMLDOM”)
如果使用ASP,可以使用下面的XML文档对象:
set xmlDoc = Server.CreateObject(”Microsoft.XMLDOM”)
4.装载一个XML文件到parser中
下面的代码装载存在的XML文档进入XML parser:
第一行脚本增加了一个Microsoft XML parser实例,第三行装载名为”note.xml”的XML文档进入parser中。第二行保证文档装载完成以后parser进行下一步工作。
5. parseError对象
打开XMl文档时,XML Parser产生错误代码,并存在parseError对象中,包括错误代码、错误文本和错误行号,等信息。
6.文件错误
下面的例子将试图装载一个不存在的文件,然后产生相应的错误代码:
var xmlDoc = new ActiveXObject(”Microsoft.XMLDOM”)
xmlDoc.async=”false”
xmlDoc.load(”ksdjf.xml”)
document.write(”
Error Code: “)
document.write(xmlDoc.parseError.errorCode)
document.write(”
Error Reason: “)
document.write(xmlDoc.parseError.reason)
document.write(”
Error Line: “)
document.write(xmlDoc.parseError.line)
7.XML错误
下面使用不正确的格式装载XMl文档,
var xmlDoc = new ActiveXObject(”Microsoft.XMLDOM”)
xmlDoc.async=”false”
xmlDoc.load(”note_error.xml”)
document.write(”
Error Code: “)
document.write(xmlDoc.parseError.errorCode)
document.write(”
Error Reason: “)
document.write(xmlDoc.parseError.reason)
document.write(”
Error Line: “)
document.write(xmlDoc.parseError.line)
8. parseError属性
属性描述:
errorCode 返回长整型错误代码
reason 返回字符串型错误原因
line 返回长整型错误行号
linePos 返回长整型错误行号位置
srcText 返回字符串型产生错误原因
url 返回url装载文档指针
filePos 返回长整型错误文件位置
9.遍历节点树
一种通用的析取XML文档的方法是遍历节点树和它的元素值。下面是使用VBscript写的遍历节点树的程序代码:
set xmlDoc=CreateObject(”Microsoft.XMLDOM”)
xmlDoc.async=”false”
xmlDoc.load(”note.xml”)
for each x in xmlDoc.documentElement.childNodes
document.write(x.nodename)
document.write(”: “)
document.write(x.text)
next
10.为XML文件提供HTML格式
XML的一个优点是把HTML文档和它的数据分离开。通过使用浏览器中的XML parser,HTML页面可以被构造成静态文档,通过Javascript提供动态数据。下面的例子使用Javascript读取XML文档,写XML数据成HTML元素:
var xmlDoc = new ActiveXObject(”Microsoft.XMLDOM”)
xmlDoc.async=”false”
xmlDoc.load(”note.xml”)
nodes = xmlDoc.documentElement.childNodes
to.innerText = nodes.item(0).text
from .innerText = nodes.item(1).text
header.innerText = nodes.item(2).text
body.innerText = nodes.item(3).text
11.通过名称访问XML元素
下面的例子使用Javascript读取XML文档,写XML数据成HTML元素:
var xmlDoc = new ActiveXObject(”Microsoft.XMLDOM”)
xmlDoc.async=”false”
xmlDoc.load(”note.xml”)
document.write(xmlDoc.getElementsByTagName(”from”).item(0).text)
12.装载纯XML文本进入parser
下面的代码装载文本字符串进入XML parser :
13.装载XML进入Parser
遍历XML节点树:
装载XML 进入HTML
Refsnes Data Internal Note
To:
From: