我想要一段完整的用ASP上传图片到数据库里的代码,谢谢。要求有附加说明,我基础比较差。 10

一共就这两个页面吗... 一共就这两个页面吗 展开
 我来答
宾揽02
2007-10-04 · TA获得超过240个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:97.2万
展开全部
这里是表单的上传部分,注意命名:文本框的命名:spic,

<tr align="center" valign="middle">
<td height="50" rowspan="2"><span class="STYLE1">请选择</span></td>
<td width="87%" height="25"><div align="left">
<input type="text" name="spic1" value="">
</div></td>
</tr>
<tr align="center" valign="middle">
<td height="25"><div align="left">
<iframe frameborder=0 width=290 height=25 scrolling=no src="upload.asp?action=spic1"></iframe>
</div> </td>
</tr>

上传的代码写在后面,先把写进数据库代码写出来,
链接查询代码就不用写了哈!
rs("字段名")=request("spic1")

===========upload.asp 页面=========

<%Server.ScriptTimeOut = 5000%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Upload</title>
<style>
<!--
*
BODY{background:#ffffff;}
.p9{ font-size: 9pt; font-family: 宋体}
.tx { width: 200 ;height: 20px; font-size: 9pt; border: 1px solid; border-color: black black #000000; color: #0000FF}
.tx1 { width: 50 ;height: 20px; font-size: 9pt; border: 1px solid; border-color: black black #000000; color: #ff0000}
-->
</style>
</head>
<body leftmargin="0" topmargin="2" class="p9">
<%
ztpic=Request.QueryString("ztpic")
select case request("action")
case "spic1":
call spic1()
end select

sub spic1()
if Request.QueryString("submit")="spic1" then
uploadpath="images/"
uploadsize="512"
uploadtype="jpg/gif/png/bmp"
Set Uprequest=new UpLoadClass
Uprequest.SavePath=uploadpath
Uprequest.MaxSize=uploadsize*1024
Uprequest.FileType=uploadtype
AutoSave=true
Uprequest.open
if Uprequest.form("file_Err")<>0 then
select case Uprequest.form("file_Err")
case 1:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>上传不成功!文件超过"&uploadsize&"k [<a href='javascript:history.go(-1)'>重新上传</a>]</font></div>"
case 2:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>上传不成功!文件格式不对 [<a href='javascript:history.go(-1)']>重新上传</a>]</font></div>"
case 3:str="<div style=""padding-top:5px;padding-bottom:5px;""> <font color=blue>上传不成功!文件太大且格式不对 [<a href='javascript:history.go(-1)'>重新上传</a>]</font></div>"
end select
response.write str
else

response.write "<script language=""javascript"">parent.form1.spic1.value='"&Uprequest.Form("file")&"';"
response.write "</script>"
response.write "<div style=""padding-top:5px;padding-bottom:5px;""> <font color=red>文件上传成功</font> [<a href='javascript:history.go(-1)'>重新上传</a>]</div>"
end if
end if
response.write "<form name=form action=?action=spic1&submit=spic1 method=post enctype=multipart/form-data>"
response.write "<input type=file name=file class='tx' size='20'> "
response.write "<input type=submit name=submit value=上传 class=""tx1"">"
response.write "</form>"
end sub

Class UpLoadClass

Private m_TotalSize,m_MaxSize,m_FileType,m_SavePath,m_AutoSave,m_Error,m_Charset
Private m_dicForm,m_binForm,m_binItem,m_strDate,m_lngTime
Public FormItem,FileItem

Public Property Get Version
Version="Fonshen UpLoadClass Version 2.1"
End Property

Public Property Get Error
Error=m_Error
End Property

Public Property Get Charset
Charset=m_Charset
End Property
Public Property Let Charset(strCharset)
m_Charset=strCharset
End Property

Public Property Get TotalSize
TotalSize=m_TotalSize
End Property
Public Property Let TotalSize(lngSize)
if isNumeric(lngSize) then m_TotalSize=Clng(lngSize)
End Property

Public Property Get MaxSize
MaxSize=m_MaxSize
End Property
Public Property Let MaxSize(lngSize)
if isNumeric(lngSize) then m_MaxSize=Clng(lngSize)
End Property

Public Property Get FileType
FileType=m_FileType
End Property
Public Property Let FileType(strType)
m_FileType=strType
End Property

Public Property Get SavePath
SavePath=m_SavePath
End Property
Public Property Let SavePath(strPath)
m_SavePath=Replace(strPath,chr(0),"")
End Property

Public Property Get AutoSave
AutoSave=m_AutoSave
End Property
Public Property Let AutoSave(byVal Flag)
select case Flag
case 0,1,2: m_AutoSave=Flag
end select
End Property

Private Sub Class_Initialize
m_Error = -1
m_Charset = "gb2312"
m_TotalSize= 0
m_MaxSize = 153600
m_FileType = "jpg/gif"
m_SavePath = ""
m_AutoSave = 0
Dim dtmNow : dtmNow = Date()
m_strDate = Year(dtmNow)&Right("0"&Month(dtmNow),2)&Right("0"&Day(dtmNow),2)
m_lngTime = Clng(Timer()*1000)
Set m_binForm = Server.CreateObject("ADODB.Stream")
Set m_binItem = Server.CreateObject("ADODB.Stream")
Set m_dicForm = Server.CreateObject("Scripting.Dictionary")
m_dicForm.CompareMode = 1
End Sub

Private Sub Class_Terminate
m_dicForm.RemoveAll
Set m_dicForm = nothing
Set m_binItem = nothing
m_binForm.Close()
Set m_binForm = nothing
End Sub

Public Function Open()
Open = 0
if m_Error=-1 then
m_Error=0
else
Exit Function
end if
Dim lngRequestSize : lngRequestSize=Request.TotalBytes
if m_TotalSize>0 and lngRequestSize>m_TotalSize then
m_Error=5
Exit Function
elseif lngRequestSize<1 then
m_Error=4
Exit Function
end if

Dim lngChunkByte : lngChunkByte = 102400
Dim lngReadSize : lngReadSize = 0
m_binForm.Type = 1
m_binForm.Open()
do
m_binForm.Write Request.BinaryRead(lngChunkByte)
lngReadSize=lngReadSize+lngChunkByte
if lngReadSize >= lngRequestSize then exit do
loop
m_binForm.Position=0
Dim binRequestData : binRequestData=m_binForm.Read()

Dim bCrLf,strSeparator,intSeparator
bCrLf=ChrB(13)&ChrB(10)
intSeparator=InstrB(1,binRequestData,bCrLf)-1
strSeparator=LeftB(binRequestData,intSeparator)

Dim strItem,strInam,strFtyp,strPuri,strFnam,strFext,lngFsiz
Const strSplit="'"">"
Dim strFormItem,strFileItem,intTemp,strTemp
Dim p_start : p_start=intSeparator+2
Dim p_end
Do
p_end = InStrB(p_start,binRequestData,bCrLf&bCrLf)-1
m_binItem.Type=1
m_binItem.Open()
m_binForm.Position=p_start
m_binForm.CopyTo m_binItem,p_end-p_start
m_binItem.Position=0
m_binItem.Type=2
m_binItem.Charset=m_Charset
strItem = m_binItem.ReadText()
m_binItem.Close()
intTemp=Instr(39,strItem,"""")
strInam=Mid(strItem,39,intTemp-39)

p_start = p_end + 4
p_end = InStrB(p_start,binRequestData,strSeparator)-1
m_binItem.Type=1
m_binItem.Open()
m_binForm.Position=p_start
lngFsiz=p_end-p_start-2
m_binForm.CopyTo m_binItem,lngFsiz

if Instr(intTemp,strItem,"filename=""")<>0 then
if not m_dicForm.Exists(strInam&"_From") then
strFileItem=strFileItem&strSplit&strInam
if m_binItem.Size<>0 then
intTemp=intTemp+13
strFtyp=Mid(strItem,Instr(intTemp,strItem,"Content-Type: ")+14)
strPuri=Mid(strItem,intTemp,Instr(intTemp,strItem,"""")-intTemp)
intTemp=InstrRev(strPuri,"\")
strFnam=Mid(strPuri,intTemp+1)
m_dicForm.Add strInam&"_Type",strFtyp
m_dicForm.Add strInam&"_Name",strFnam
m_dicForm.Add strInam&"_Path",Left(strPuri,intTemp)
m_dicForm.Add strInam&"_Size",lngFsiz
if Instr(strFnam,".")<>0 then
strFext=Mid(strFnam,InstrRev(strFnam,".")+1)
else
strFext=""
end if

select case strFtyp
case "image/jpeg","image/pjpeg","image/jpg"
if Lcase(strFext)<>"jpg" then strFext="jpg"
m_binItem.Position=3
do while not m_binItem.EOS
do
intTemp = Ascb(m_binItem.Read(1))
loop while intTemp = 255 and not m_binItem.EOS
if intTemp < 192 or intTemp > 195 then
m_binItem.read(Bin2Val(m_binItem.Read(2))-2)
else
Exit do
end if
do
intTemp = Ascb(m_binItem.Read(1))
loop while intTemp < 255 and not m_binItem.EOS
loop
m_binItem.Read(3)
m_dicForm.Add strInam&"_Height",Bin2Val(m_binItem.Read(2))
m_dicForm.Add strInam&"_Width",Bin2Val(m_binItem.Read(2))
case "image/gif"
if Lcase(strFext)<>"gif" then strFext="gif"
m_binItem.Position=6
m_dicForm.Add strInam&"_Width",BinVal2(m_binItem.Read(2))
m_dicForm.Add strInam&"_Height",BinVal2(m_binItem.Read(2))
case "image/png","image/x-png"
if Lcase(strFext)<>"png" then strFext="png"
m_binItem.Position=18
m_dicForm.Add strInam&"_Width",Bin2Val(m_binItem.Read(2))
m_binItem.Read(2)
m_dicForm.Add strInam&"_Height",Bin2Val(m_binItem.Read(2))
case "image/bmp"
if Lcase(strFext)<>"bmp" then strFext="bmp"
m_binItem.Position=18
m_dicForm.Add strInam&"_Width",BinVal2(m_binItem.Read(4))
m_dicForm.Add strInam&"_Height",BinVal2(m_binItem.Read(4))
case "application/x-shockwave-flash"
if Lcase(strFext)<>"swf" then strFext="swf"
m_binItem.Position=0
if Ascb(m_binItem.Read(1))=70 then
m_binItem.Position=8
strTemp = Num2Str(Ascb(m_binItem.Read(1)), 2 ,8)
intTemp = Str2Num(Left(strTemp, 5), 2)
strTemp = Mid(strTemp, 6)
while (Len(strTemp) < intTemp * 4)
strTemp = strTemp & Num2Str(Ascb(m_binItem.Read(1)), 2 ,8)
wend
m_dicForm.Add strInam&"_Width", Int(Abs(Str2Num(Mid(strTemp, intTemp + 1, intTemp), 2) - Str2Num(Mid(strTemp, 1, intTemp), 2)) / 20)
m_dicForm.Add strInam&"_Height",Int(Abs(Str2Num(Mid(strTemp, 3 * intTemp + 1, intTemp), 2) - Str2Num(Mid(strTemp, 2 * intTemp + 1, intTemp), 2)) / 20)
end if
end select

m_dicForm.Add strInam&"_Ext",strFext
m_dicForm.Add strInam&"_From",p_start
intTemp=GetFerr(lngFsiz,strFext)
if m_AutoSave<>2 then
m_dicForm.Add strInam&"_Err",intTemp
if intTemp=0 then
if m_AutoSave=0 then
strFnam=GetTimeStr()
if strFext<>"" then strFnam=strFnam&"."&strFext
end if
m_binItem.SaveToFile Server.MapPath(m_SavePath&strFnam),2
m_dicForm.Add strInam,strFnam
end if
end if
else
m_dicForm.Add strInam&"_Err",-1
end if
end if
else
m_binItem.Position=0
m_binItem.Type=2
m_binItem.Charset=m_Charset
strTemp=m_binItem.ReadText
if m_dicForm.Exists(strInam) then
m_dicForm(strInam) = m_dicForm(strInam)&","&strTemp
else
strFormItem=strFormItem&strSplit&strInam
m_dicForm.Add strInam,strTemp
end if
end if

m_binItem.Close()
p_start = p_end+intSeparator+2
loop Until p_start+3>lngRequestSize
FormItem=Split(strFormItem,strSplit)
FileItem=Split(strFileItem,strSplit)

Open = lngRequestSize
End Function

Private Function GetTimeStr()
m_lngTime=m_lngTime+1
GetTimeStr=m_strDate&Right("00000000"&m_lngTime,8)
End Function

Private Function GetFerr(lngFsiz,strFext)
dim intFerr
intFerr=0
if lngFsiz>m_MaxSize and m_MaxSize>0 then
if m_Error=0 or m_Error=2 then m_Error=m_Error+1
intFerr=intFerr+1
end if
if Instr(1,LCase("/"&m_FileType&"/"),LCase("/"&strFext&"/"))=0 and m_FileType<>"" then
if m_Error<2 then m_Error=m_Error+2
intFerr=intFerr+2
end if
GetFerr=intFerr
End Function

Public Function Save(Item,strFnam)
Save=false
if m_dicForm.Exists(Item&"_From") then
dim intFerr,strFext
strFext=m_dicForm(Item&"_Ext")
intFerr=GetFerr(m_dicForm(Item&"_Size"),strFext)
if m_dicForm.Exists(Item&"_Err") then
if intFerr=0 then
m_dicForm(Item&"_Err")=0
end if
else
m_dicForm.Add Item&"_Err",intFerr
end if
if intFerr<>0 then Exit Function
if VarType(strFnam)=2 then
select case strFnam
case 0:strFnam=GetTimeStr()
if strFext<>"" then strFnam=strFnam&"."&strFext
case 1:strFnam=m_dicForm(Item&"_Name")
end select
end if
m_binItem.Type = 1
m_binItem.Open
m_binForm.Position = m_dicForm(Item&"_From")
m_binForm.CopyTo m_binItem,m_dicForm(Item&"_Size")
m_binItem.SaveToFile Server.MapPath(m_SavePath&strFnam),2
m_binItem.Close()
if m_dicForm.Exists(Item) then
m_dicForm(Item)=strFnam
else
m_dicForm.Add Item,strFnam
end if
Save=true
end if
End Function

Public Function GetData(Item)
GetData=""
if m_dicForm.Exists(Item&"_From") then
if GetFerr(m_dicForm(Item&"_Size"),m_dicForm(Item&"_Ext"))<>0 then Exit Function
m_binForm.Position = m_dicForm(Item&"_From")
GetData=m_binForm.Read(m_dicForm(Item&"_Size"))
end if
End Function

Public Function Form(Item)
if m_dicForm.Exists(Item) then
Form=m_dicForm(Item)
else
Form=""
end if
End Function

Private Function BinVal2(bin)
dim lngValue,i
lngValue = 0
for i = lenb(bin) to 1 step -1
lngValue = lngValue *256 + Ascb(midb(bin,i,1))
next
BinVal2=lngValue
End Function

Private Function Bin2Val(bin)
dim lngValue,i
lngValue = 0
for i = 1 to lenb(bin)
lngValue = lngValue *256 + Ascb(midb(bin,i,1))
next
Bin2Val=lngValue
End Function

Private Function Num2Str(num, base, lens)
Dim ret,i
ret = ""
while(num >= base)
i = num Mod base
ret = i & ret
num = (num - i) / base
wend
Num2Str = Right(String(lens, "0") & num & ret, lens)
End Function

Private Function Str2Num(str, base)
Dim ret, i
ret = 0
for i = 1 to Len(str)
ret = ret * base + Cint(Mid(str, i, 1))
next
Str2Num = ret
End Function
End Class

%>
</body>

恩.我把上传到数据库的代码的form表单的代码集成一个页
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式