China ASP File Upload Component for ASP Beta 3 (build 33)
Copyrigt (C) China ASP , 1999 All Right Reserved


许可协议

请参阅license.txt

功能简介

支持上传多个文件

可以将上传的文件改名保存

可以同时使用其它的form input,携带附加的信息,例如,文件说明。

可以判断上传文件的大小、文件类型

支持将文件内容保存进数据库

无需IIS将目录设置为Write(如果是NTFS文件系统,其安全性需要设置,可以简单的设置为everyone full control,或者设置为IUSR_SERVER full control)

适用系统

适用于 NT4.0 server 中文版 + IIS 4

组件属性

Files

只读

返回一个Collection对象,包含上传文件的信息(ContentType、文件名、上传Form内的Input名称、文件大小、及文件的两进制内容)

Form

只读

返回一个Collection对象,包含上传form内其他类型input(text/button等)的内容(form内input名称、该input的value)

UsedTime

只读

Com处理上传信息所使用的时间

CopyrightInfo

只读

版权信息

Files元素的属性

controlName

只读

上传Form内对应的file类型input的名称

IsEmpty

只读

是否是Empty,如果上传Form的file类型的input没有输入任何路径,则上传后其对应的files元素的IsEmpty值就为true,反之为false

FileName

只读

上传的原文件名

FileSize

只读

文件大小,如果上传的原文件不存在,则FileSize为0

ContentType

只读

上传文件内容的Mime类型,如text/plain

FileContent

只读

文件的两进制内容

Files元素的方法

SaveAs filename filename是是文件路径,如果是url,需要用server.mappath()进行转化

Form元素的属性

controlName

只读

上传Form内对应的input/textarea/button/...的名称

value

只读

输入/选择的内容

使用说明

请参考Samples.zip,实例程序将上传文件到其子目录Upload下面

上传form的写作
<form enctype="multipart/form-data" method="post" action="Upload.asp" name="Upload">
enctype="multipart/form-data" 是必须的,并且method必须是post
在上传Form内必须加上<input type="hidden" name="CopyrightInfo" value="http://www.chinaasp.com">,
否则上传组件将不能正常使用

如果获得上传文件的文件个数
set FileUp=server.createobject("ChinaASP.UpLoad")
response.write "文件个数:"&fileup.files.count

如果上传多个文件,如果确定对应file input上传的文件
如果上传form内的input的name是file1
set f=fileup.files("file1")
这样f就是你需要的文件

如何获得文件的后缀名
fileext=getFileExtName(f.filename)
function getFileExtName(fileName)
    dim pos
    pos=instrrev(filename,".")
    if pos>0 then
        getFileExtName=mid(fileName,pos+1)
    else
        getFileExtName=""
    end if
end function

如何将文件内容保存进数据库
如果你使用sql server,需要定义一个image类型的字段
dim conn,rs
set conn=server.CreateObject("adodb.connection")
conn.open "testfile","sa","xxx"
set rs=server.CreateObject("adodb.recordset")
rs.Open "SELECT * FROM [file] where filename is null",conn,1,3
rs.AddNew
rs("filename")=f.filename
rs("filesize")=f.filesize
rs("filecontent").AppendChunk f.filecontent //BLOB数据不能直接赋值
rs.Update
rs.Close
conn.Close
set rs=nothing
set conn=nothing   
相反的要将数据从数据库里面取出来,请参考下面的程序
dim conn,rs
dim content
set conn=server.CreateObject("adodb.connection")
conn.open "testfile","sa","xxx"
set rs=server.CreateObject("adodb.recordset")
rs.Open "SELECT * FROM [file] where id =" & id,conn,1,1
content=rs("filecontent").getChunk(clng(rs("filesize")))))
conn.Close
set rs=nothing
set conn=nothing       

测试反馈

如果你在测试中发现任何问题,请mailto: shen.pengfei@263.net,或者请在我们的bbs进行讨论。

欢迎访问动感技术网络ASP技术站点 www.chinaasp.com


[全文完]