无组件上传在高校图书馆数字资源建设中的应用

时间:2022-05-19 09:15:02 心得体会 浏览次数:

(1.曲阜师范大学 图书馆, 山东 日照 276826;2.潍坊市人民医院 财务科,山东 潍坊 261041)
摘 要: 文章根据高校图书馆自建数据库的特点和实际需要,提出了用asp无组件上传数据库技术 来建立和扩展数据库信息资源的建议,并给出了算法。通过实际应用的成功实践证明,该技 术在信息上传和共享方面的优势能较好地满足高校图书馆数字资源建设的需要。
关键词:无组件上传;asp;数字资源;高校图书馆
中图分类号:G258  文献标识码:B  文章编号:1007—6921(2009)18—0139—02

高校图书馆作为高校的一个信息集散地,它的信息储备量和更新速度是关键。一般情况下, 高校图书馆的数据信息来源有2个方面:①通过购买数据资源获得较普及的期刊及图书资 料,②通过自己建立数据库收集有本校特色的各类数据资源,这些本校特色数据资源内容 广 泛,形式也不拘一格,最主要的是它符合各高校的特色和实际需要。因此自建数据库对高校 图书馆来说是很有必要的。

自建特色资源应该以实用为最终目的,因此不应拘泥于形势,应该做到能随时随地上传各种 类型的文件。为了安全和方便,文件应以数据库的形式保存。这就要求一种上传数据库的技 术。
1 HTTP文件上传分析

传统的文件上传大多采用FTP或HTTP方法,FTP本质上是异步的,须借助客户端程序,而且可 编程性较差。 HTTP方法与FTP方法相比具有无需账号及权限管理、不受防火墙限制、更为灵 活、方便进行数据库操作等优点,而且ASP技术开发是基于HTTP协议的,HTTP上传可产生许 多可访问的附加信息,具有可编程性,使得HTTP上传比FTP有明显的优势。

HTTP上传又分为有组件上传和无组件上传。组件上传也存在一个问题,它们都是第三方产品 而非标准的ASP的一部分,必须在服务器上注册,有可能发生配置问题。另外,这些组件大 部分不是免费的,也不是开放源码的软件,无法根据需要进行修改、定制。因此,使用ASP 实现无组件上传就显得更为灵活,它可以将所有需要的功能都在Web应用程序中实现,不必 在服务器中进行设置。

利用无组件上传,可以随时随地上传任何形式的文件,而且上传的文件立即同步显示在网上 ,包括影音文件、图片和其他任何文件,所有上传到数据库中的文件可以提供全方位的共享 ,既可以提供下载,又可在线显示、播放等等,无论是对于资源提供者还是资源利用者,都 是极为灵活方便的,因此说这种方式对于本校师生建立自己的共享资源十分适用。
2 无组件上传的原理

服务器的无组件上传数据利用ASP代码来实现。具体主要利用了ASP的几种对象和方法,以及 对数据库编程的SQL语句来实现的。客户端利用HTML页面的Form表单和Post方法以Multipart /form-data编码方式向服务器提交多域数据流,Action属性指定的服务器端程序对截获的多 域数据流解码获得上传内容并写入数据库。
2.1 Request.BinaryRead()方法
使用Request.BinaryRead()方法可以获取提交的文件数据。
语法:VarReValuc = Request. BinaryRead (Count);
变量VarReValue返回值保存从客户端读取到的二进制数据;
参数Count是一个整数,表示每次读取的数据字节大小。
2.2 Request. TotalBytes属性
Request. TotalBytes属性是一个只读的属性,表示从客户 端读取到的数据的字节大小,这个值跟上面所提到的Count相对应,可以大于或等于Count值。
语法:字节大小=Request.TotalBytes。
2.3 Response.BinaryWrite()方法
使用Response.BinaryWrite()方法来显示图片对象的内容;
语法:Response.BinaryWrite data;
如:Set image=Server.Creatobject(“Aspimage.Image”)  建立image对象;
  Response.BinaryWrite Image.image     显示图片;
  参数data是要写进客户端浏览器中的二进制数据包。
2.4 AppendChunk方法
AppendChunk方法的作用是将二进制数据追加到Field或Parameter对象。
语法:object.Append Chunk data;
  参数data为要追加到Field或Parameter对象中的数据包。
2.5 GetChunk方法
GetChunk方法返回二进制数据的内容。
  语法:object.Getchunk(size);
参数size指明要返回二进制数据的长度,可以是长整型表达式。
3 ASP程序实例
以下是实际应用中数据上传服务器的部分关 键语句:
ByteCount=Request.TotalBytes "读取数据总长度
Set Upload=CreateObject(“Scripting.Dictionary”)
formnum=0
if ByteCount>0 then
 "读取表单内容
 BinForm=Request.BinaryRead(ByteCount)
 "取出字段分隔串
 FormID=MidB(BinForm,1,InstrB(BinForm,ChrB(13))-1)
 "搜索字段结束串位置
 FormEnd=InstrB(1,BinForm,FormID & ChrB(45) & ChrB(45))
 BinStart=1 "设置开始串位置为1
 Contentstr=ToBin(“Content-Disposition”)
 Do Until BinStart=>FormEnd"如果是结束位则退出
Set UpLoadAttrib=CreateObject(“Scripting.Dictionary”)
Binbeg=InstrB(BinStart,BinForm,Contentstr) "查找“Content-Disposition ”的字串位置
Binbeg=InstrB(Binbeg,BinForm,ToBin(“name=”))+6"搜索并跳过“nam e=“表单名””中第一个引号
Binend=InstrB(Binbeg,BinForm,ChrB(34)) "搜索“name=”表单 名“”中最后一个引号
FormName=Tostr(MidB(BinForm,Binbeg,BinEnd-BinBeg)) "取出表单名
BinStart=BinEnd+1
Binbeg=InstrB(BinStart,BinForm,ToBin(“filename=”)) 
Binend=InstrB(BinStart,BinForm,FormID) "搜索下一个字段分 隔符,判断以上是否是File表单内容
...
...
UpLoadAttrib.Add “Size”,FileSize"将取出数据存入对象中 
UpLoadAttrib.Add “Value”,Value
UpLoadAttrib.Add “Type”,UploadType
UpLoadAttrib.Add “FileName”,UploadFileName
UpLoad.Add FormName,UploadAttrib
set UploadAttrib=nothing
BinStart=BinEnd+2 "指向下一个字段开始处
 Loop
Name=upload.item(“inp”).item(“FileName”)
size=upload.item(“inp”).item(“Size”)
typ =upload.item(“inp”).item(“Type”)
End if
写入数据库及显示程序(略)
4 结束语

采用无组件上传的方法将文件上传到数据库是一种非常灵活方便的信息采集和共享方式。笔 者已将该技术成功地应用于实际工作中,并在实际的应用中体会到,此种数据上传技术既可 随时随地上传任何文件,又可下载或在线浏览信息,对于数据收集和共享都提供了极大方便 ,非常适合师生建立有自己特色的信息中心,是高校图书馆自建数据资源的一个很好的途径 。
[参考文献]
[1] 段雷,杨兆建.ASP Web应用程序开发中的数据文件上传与处理[J]. 机械 管理开发,2005,83(2):56~58.
[2] 孙占东,姜加虎.ASP实现无组件的文件上传[J].计算机应用,2003, 2 3( 9):136~138.
[3] 张登辉. ASP编程基础及应用[M].北京:机械工业出版社,2002.

推荐访问:图书馆 高校 上传 数字 无组件