ASP无组件上传图片的完整教程

在使用本代码前,你需要首先制作好添加产品的界面,也就是用户录入资料与选择图片的页面. 本代码允许用户上传大图和小图两张图片.

请将下面的代码复制并保存为一个asp文件,例如:product-upload.asp, 并连接好数据库,把upload_5xsoft.inc无组件程序文件包括在内.

<%@LANGUAGE=”VBSCRIPT”%>
<!–#include file=”conn.asp” –>
<!–#include file=”other/upload_5xsoft.inc” –>
<%
set upload=new upload_5xsoft
m=trim(upload.form(“kind”))
kind1=right(trim(upload.form(“kind”)),len(m)-1)
kind=left(trim(upload.form(“kind”)),1)
title1=trim(upload.form(“title1”))
title1e=trim(upload.form(“title1e”))
title=trim(upload.form(“title”))
title4=trim(upload.form(“title4”))
zt=trim(upload.form(“zt”))
titlee=trim(upload.form(“titlee”))
tj=trim(upload.form(“tj”))
price=trim(upload.form(“price”))
price1=trim(upload.form(“price1”))
info=upload.form(“info”)
infoe=upload.form(“infoe”)
set files=upload.file(“photos”)
set file=upload.file(“photo”)
fileExt=lcase(right(file.filename,4))
fileExts=lcase(right(files.filename,4))
if fileEXT<>”.gif” and fileEXT<>”.jpg” and fileEXT<>”.bmp” and fileEXT<>”.png” then
response.write”<script>alert(‘Invalid file type’);location.href=’javascript:history.back()'</script>”
end if
if fileEXTs<>”.gif” and fileEXTs<>”.jpg” and fileEXTs<>”.bmp” and fileEXTs<>”.png” then
response.write”<script>alert(‘Invalid file type’);location.href=’javascript:history.back()'</script>”
end if

if file.fileSize>0 and files.fileSize>0 then
formPath=”../photo/”
formPaths=”../photos/”
set rs=server.CreateObject(“adodb.recordset”)
sql=”select * from [product]”
rs.open sql,conn,1,3
rs.addnew

vfname = makefilename(now())
fname = vfname & “.” & GetExtendName(file.FileName)
fnames = “s” & vfname & “.” & GetExtendName(files.FileName)
file.SaveAs Server.mappath(formPath&fname)   ”保存文件
files.SaveAs Server.mappath(formPaths&fnames)   ”保存文件

if kind=”A” then
rs(“id1″)=kind1
elseif kind=”B” then
set rs5=server.createobject(“adodb.recordset”)
sql5=”select * from [ps2] where id=”&kind1&””
rs5.open sql5,conn,1,1
rs(“id1”)=rs5(“id1”)
rs(“id2″)=kind1
rs5.close
set rs5=nothing
elseif kind=”C” then
set rs5=server.createobject(“adodb.recordset”)
sql5=”select * from [ps3] where id=”&kind1&””
rs5.open sql5,conn,1,1
rs(“id1”)=rs5(“id1”)
rs(“id2”)=rs5(“id2”)
rs(“id3”)=kind1

rs5.close
set rs5=nothing
end if

rs(“title”)=title
rs(“title4”)=title4
rs(“zt”)=zt
rs(“price”)=price
‘rs(“price1”)=price1
rs(“info”)=info
rs(“infoe”)=infoe
rs(“title1”)=title1
rs(“title1e”)=title1e
rs(“photo”)=fname
rs(“photos”)=fnames
rs(“tj”)=tj
rs(“time”)=now()
rs.update
rs.movelast
session(“cpid”)=rs(“id”)
response.write “<script>location.href=’javascript:history.back()’;</script>”
end if
set file=nothing
set upload=nothing

function makefilename(fname)
fname = now()
fname = replace(fname,”/”,””)
fname = replace(fname,” “,””)
fname = replace(fname,”:”,””)
fname = replace(fname,”PM”,””)
fname = replace(fname,”AM”,””)
fname = replace(fname,”上午”,””)
fname = replace(fname,”下午”,””)
makefilename=fname
end function
function GetExtendName(FileName)
dim ExtName
ExtName = LCase(FileName)
ExtName = right(ExtName,3)
ExtName = right(ExtName,3-Instr(ExtName,”.”))
GetExtendName = ExtName
end function
%>

upload_5xsoft.inc

<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
dim Data_5xsoft

Class upload_5xsoft

dim objForm,objFile,Version

Public function Form(strForm)
strForm=lcase(strForm)
if not objForm.exists(strForm) then
Form=””
else
Form=objForm(strForm)
end if
end function

Public function File(strFile)
strFile=lcase(strFile)
if not objFile.exists(strFile) then
set File=new FileInfo
else
set File=objFile(strFile)
end if
end function
Private Sub Class_Initialize
dim RequestData,sStart,vbCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile
dim iFileSize,sFilePath,sFileType,sFormValue,sFileName
dim iFindStart,iFindEnd
dim iFormStart,iFormEnd,sFormName
Version=”化境HTTP上传程序 Version 2.0″
set objForm=Server.CreateObject(“Scripting.Dictionary”)
set objFile=Server.CreateObject(“Scripting.Dictionary”)
if Request.TotalBytes<1 then Exit Sub
set tStream = Server.CreateObject(“adodb.stream”)
set Data_5xsoft = Server.CreateObject(“adodb.stream”)
Data_5xsoft.Type = 1
Data_5xsoft.Mode =3
Data_5xsoft.Open
Data_5xsoft.Write  Request.BinaryRead(Request.TotalBytes)
Data_5xsoft.Position=0
RequestData =Data_5xsoft.Read

iFormStart = 1
iFormEnd = LenB(RequestData)
vbCrlf = chrB(13) & chrB(10)
sStart = MidB(RequestData,1, InStrB(iFormStart,RequestData,vbCrlf)-1)
iStart = LenB (sStart)
iFormStart=iFormStart+iStart+1
while (iFormStart + 10) < iFormEnd
iInfoEnd = InStrB(iFormStart,RequestData,vbCrlf & vbCrlf)+3
tStream.Type = 1
tStream.Mode =3
tStream.Open
Data_5xsoft.Position = iFormStart
Data_5xsoft.CopyTo tStream,iInfoEnd-iFormStart
tStream.Position = 0
tStream.Type = 2
tStream.Charset =”gb2312″
sInfo = tStream.ReadText
tStream.Close
‘取得表单项目名称
iFormStart = InStrB(iInfoEnd,RequestData,sStart)
iFindStart = InStr(22,sInfo,”name=”””,1)+6
iFindEnd = InStr(iFindStart,sInfo,””””,1)
sFormName = lcase(Mid (sinfo,iFindStart,iFindEnd-iFindStart))
‘如果是文件
if InStr (45,sInfo,”filename=”””,1) > 0 then
set theFile=new FileInfo
‘取得文件名
iFindStart = InStr(iFindEnd,sInfo,”filename=”””,1)+10
iFindEnd = InStr(iFindStart,sInfo,””””,1)
sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
theFile.FileName=getFileName(sFileName)
theFile.FilePath=getFilePath(sFileName)
‘取得文件类型
iFindStart = InStr(iFindEnd,sInfo,”Content-Type: “,1)+14
iFindEnd = InStr(iFindStart,sInfo,vbCr)
theFile.FileType =Mid (sinfo,iFindStart,iFindEnd-iFindStart)
theFile.FileStart =iInfoEnd
theFile.FileSize = iFormStart -iInfoEnd -3
theFile.FormName=sFormName
if not objFile.Exists(sFormName) then
objFile.add sFormName,theFile
end if
else
‘如果是表单项目
tStream.Type =1
tStream.Mode =3
tStream.Open
Data_5xsoft.Position = iInfoEnd
Data_5xsoft.CopyTo tStream,iFormStart-iInfoEnd-3
tStream.Position = 0
tStream.Type = 2
tStream.Charset =”gb2312″
sFormValue = tStream.ReadText
tStream.Close
if objForm.Exists(sFormName) then
objForm(sFormName)=objForm(sFormName)&”, “&sFormValue
else
objForm.Add sFormName,sFormValue
end if
end if
iFormStart=iFormStart+iStart+1
wend
RequestData=””
set tStream =nothing
End Sub

Private Sub Class_Terminate
if Request.TotalBytes>0 then
objForm.RemoveAll
objFile.RemoveAll
set objForm=nothing
set objFile=nothing
Data_5xsoft.Close
set Data_5xsoft =nothing
end if
End Sub

Private function GetFilePath(FullPath)
If FullPath <> “” Then
GetFilePath = left(FullPath,InStrRev(FullPath, “\”))
Else
GetFilePath = “”
End If
End  function

Private function GetFileName(FullPath)
If FullPath <> “” Then
GetFileName = mid(FullPath,InStrRev(FullPath, “\”)+1)
Else
GetFileName = “”
End If
End  function
End Class

Class FileInfo
dim FormName,FileName,FilePath,FileSize,FileType,FileStart
Private Sub Class_Initialize
FileName = “”
FilePath = “”
FileSize = 0
FileStart= 0
FormName = “”
FileType = “”
End Sub

Public function SaveAs(FullPath)
dim dr,ErrorChar,i
SaveAs=true
if trim(fullpath)=”” or FileStart=0 or FileName=”” or right(fullpath,1)=”/” then exit function
set dr=CreateObject(“Adodb.Stream”)
dr.Mode=3
dr.Type=1
dr.Open
Data_5xsoft.position=FileStart
Data_5xsoft.copyto dr,FileSize
dr.SaveToFile FullPath,2
dr.Close
set dr=nothing
SaveAs=false
end function
End Class
</SCRIPT>

此文为本站原创,转载请标明出处:www.3code.cn 酷码资源

分类: ASP

寒林

www.3code.cn 专注WordPress企业主题