怎样用数据库存取图片?
怎样用ASP写库?读库? 问题点数:34、回复次数:3Top
1 楼tonnycncn(托尼)(weiw.com)回复于 2001-11-11 13:53:04 得分 0
用纯ASP代码实现图片上传并存入数据库中
http://xin/hw/webnet/asp/tech/01110503.htmTop
2 楼hvq(程序员.net)回复于 2001-11-11 14:58:50 得分 34
试试我写的上传类!
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<style type="text/css">
<!--
body {font-size:11pt;ext-decoration:none}
-->
</style>
<BODY>
<P> </P>
<FORM name=form1 action="up.asp" method=post enctype="multipart/form-data">
表单元素一(文本一):
<INPUT type="text" id=text1 name=text1>
<BR>
表单元素二(文件一):
<INPUT type="file" id=file1 name=file1>
<BR>
表单元素三(文件二):
<INPUT type="file" id=file1 name=file1>
<BR>
表单元素四(文本二):
<INPUT type="submit" value="提交" id=submit1 name=submit1>
</FORM>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<style type="text/css">
<!--
body {font-size:11pt;ext-decoration:none}
-->
</style>
<BODY>
<% '文件表单上传类 表单Form应有属性:enctype="multipart/form-data"
Class FileForm
Private formdata,divstr,flagstr,startaddr,endaddr
Sub InitForm '表单数据初始化
Dim formsize,firstaddr
formsize=request.totalbytes
formdata=request.binaryread(formsize)
divstr=chrB(13) & chrB(10) & chrB(13) & chrB(10) '两个回车换行符作为前分隔符
firstaddr=instrb(1,formdata,chrB(13) & chrB(10))-1 '第一个回车换行前一位置,即后分隔符尾位置
'firstaddr即为后分隔符的长度
flagstr=midb(formdata,1,firstaddr) '开始的一段字符作为后分隔符
startaddr=firstaddr
endaddr=startaddr
filelen=0
End Sub
Private Function chrtob(str) '将ASCII码字符串转化为二进制流(字节数据)
dim temp,i
temp=""
for i=1 to len(str)
temp=temp&chrb(ascb(mid(str,i,1)))
next
chrtob=temp
End Function
Private Function btochr(strb) '转换二进制数据为普通字符
dim tname,i
tname=""
for i=1 to lenb(strb)
tname=tname & chr(ascb(midb(strb,i,1)))
next
btochr=tname
End Function
Private Function btostr(strb) '转换二进制数据为普通字符(支持中文)
dim skipflag,ccc,i,clow
skipflag=0
ccc=""
For i=1 To LenB(strb)
If skipflag=0 Then
clow=MidB(strb,i,1)
If AscB(clow) > 127 Then
ccc=ccc & Chr(AscW(MidB(strb,i+1,1) & clow))
skipflag=1
Else
ccc=ccc & Chr(AscB(clow))
End If
Else
skipflag=0
End If
Next
btostr=ccc
End Function
Private Function FindLast(sourceb,findb) '找到findb指定在sourceb中的位置 没找到返回0
dim flagaddr,tempaddr,tstart,tend,findaddr
flagaddr=0
tstart=1
tend=lenb(sourceb)
tempaddr=tstart
findaddr=0
while tempaddr<tend
flagaddr=instrb(tempaddr,sourceb,findb)
if flagaddr=0 then
tempaddr=tend
else
tempaddr=flagaddr+1
findaddr=flagaddr
end if
wend
FindLast=findaddr
End Function
Function GetText '取得文本数据
dim tempstr
startaddr=instrb(endaddr,formdata,divstr)+4 '加前分隔符长得串首位置
endaddr=instrb(startaddr,formdata,flagstr)-2 '减一回车换行符长得串尾后一位置
tempstr=midb(formdata,startaddr,endaddr-startaddr) '得到文本数据的二进制数据
GetText=btostr(tempstr) '转换为普通字符
End Function
Function GetFileData '取得文件数据,为二进制
dim tempstr
startaddr=instrb(endaddr,formdata,divstr)+4 '加前分隔符长得串首位置
endaddr=instrb(startaddr,formdata,flagstr)-2 '减一回车换行符得串尾后一位置
tempstr=midb(formdata,startaddr,endaddr-startaddr) '串尾后一位置减串首位置为串的长度
GetFileData=tempstr
End Function
Function GetFileSize '取得文件大小,只能在用GetFileData之后使用
GetFileSize=endaddr-startaddr '为实际文件大小LenB(GetFileData)
End Function
Function GetFileType '取得文件类型,只能在用GetFileData之前使用
dim typeflag,tstart,tend,ttype
typeflag=chrtob("Content-Type: ") '长度为14
tstart=instrb(endaddr,formdata,typeflag)+14 '文件类型首字符处
tend=instrb(tstart,formdata,divstr) '文件类型尾字符处
ttype=midb(formdata,tstart,tend-tstart)
GetFileType=btochr(ttype)
End Function
Function GetFileExt '取得文件后缀,只能在用GetFileData之前使用
dim typeflag,tstart,textend
typeflag=chrtob("Content-Disposition: form-data; ") '长度为32
tstart=instrb(endaddr,formdata,typeflag)+32
tend=instrb(tstart,formdata,chrB(13)&chrB(10)) '回车换行
textend=midb(formdata,tstart,tend-tstart)
tstart=FindLast(textend,chrb(46)) '"."为46
textend=midb(textend,tstart+1,lenb(textend)-tstart-1)
GetFileExt=btochr(textend)
End Function
Function GetFileName '取得文件名,只能在用GetFileData之前使用
dim typeflag,tstart,tempstr
typeflag=chrtob("Content-Disposition: form-data; ") '长度为32
tstart=instrb(endaddr,formdata,typeflag)+32
tend=instrb(tstart,formdata,chrB(13)&chrB(10)) '回车换行
tempstr=midb(formdata,tstart,tend-tstart)
tstart=FindLast(tempstr,chrb(92)) '"\"为92
if tstart=0 then
GetFileName="非法文件"
else
tempstr=midb(tempstr,tstart+1,lenb(tempstr)-tstart-1)
GetFileName=btostr(tempstr)
end if
End Function
End Class
%>
<%
Response.Expires=0
response.buffer=true
Response.Clear
set ffm= new FileForm
ffm.InitForm
'有四个表单元素
response.write "文本一数据:" &"<BR>"
Response.Write ffm.GetText() &"<BR><BR>"
response.write "文件一数据:" &"<BR>"
response.write "文件名:"& ffm.GetFileName() &"<BR>"
response.write "文件类型:"& ffm.GetFileType() &"<BR>"
ffm.GetFileData() '文件内容
response.write "文件大小:"& ffm.GetFileSize() &"<BR>"&"<BR>"
response.write "文件二数据:" &"<BR>"
response.write "文件名:"& ffm.GetFileName() &"<BR>"
response.write "文件类型:"& ffm.GetFileType() &"<BR>"
ffm.GetFileData() '文件内容
response.write "文件大小:"& ffm.GetFileSize() &"<BR><BR>"
response.write "文本二数据:" &"<BR>"
Response.Write ffm.GetText &"<BR><BR>"
%>
</BODY>
</HTML>
Top
3 楼ksy(一定要争气)回复于 2001-11-12 13:27:06 得分 0
非常感谢楼上的仁兄,谢谢!Top




