图片的上传与分页显示实训指导.docx
- 文档编号:27349506
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:19
- 大小:119.46KB
图片的上传与分页显示实训指导.docx
《图片的上传与分页显示实训指导.docx》由会员分享,可在线阅读,更多相关《图片的上传与分页显示实训指导.docx(19页珍藏版)》请在冰豆网上搜索。
图片的上传与分页显示实训指导
图片的上传与分页显示实训指导
一、先创建一个文件夹,再在该文件夹中再创建admin文件夹,如下图所示:
Uploadfile文件夹是用来存放上传到WEB服务器上的文件的,创建时,该文件夹是空的。
二、文件上传功能的实现
1.先创建数据库文件myfile.mdb,其数据结构如下图所示:
图3
(举一反三:
字段数及字段名和表名都可以根据实际情况进行改变,或把该表文件的字段融合到你原有的表中。
等你做完后,再回头理解这句话的含义!
)
2.把upload_5xsoft.asp文件拷贝到相应文件夹中,参考图2.
upload_5xsoft.asp是无组件上传文件的核心代码,是通用文件,你可以理解为系统性质的文件,你只需会用就可以。
其代码如下,如果有兴趣你可以看看。
<%
dimData_5xsoft
Classupload_5xsoft
dimobjForm,objFile,Version
PublicfunctionForm(strForm)
strForm=lcase(strForm)
ifnotobjForm.exists(strForm)then
Form=""
else
Form=objForm(strForm)
endif
endfunction
PublicfunctionFile(strFile)
strFile=lcase(strFile)
ifnotobjFile.exists(strFile)then
setFile=newFileInfo
else
setFile=objFile(strFile)
endif
endfunction
PrivateSubClass_Initialize
dimRequestData,sStart,vbCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile
dimiFileSize,sFilePath,sFileType,sFormValue,sFileName
dimiFindStart,iFindEnd
dimiFormStart,iFormEnd,sFormName
Version="化境HTTP上传程序Version2.0"
setobjForm=Server.CreateObject("Scripting.Dictionary")
setobjFile=Server.CreateObject("Scripting.Dictionary")
ifRequest.TotalBytes<1thenExitSub
settStream=Server.CreateObject("adodb.stream")
setData_5xsoft=Server.CreateObject("adodb.stream")
Data_5xsoft.Type=1
Data_5xsoft.Mode=3
Data_5xsoft.Open
Data_5xsoft.WriteRequest.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) iInfoEnd=InStrB(iFormStart,RequestData,vbCrlf&vbCrlf)+3 tStream.Type=1 tStream.Mode=3 tStream.Open Data_5xsoft.Position=iFormStart Data_5xsoft.CopyTotStream,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)) '如果是文件 ifInStr(45,sInfo,"filename=""",1)>0then settheFile=newFileInfo '取得文件名 iFindStart=InStr(iFindEnd,sInfo,"filename=""",1)+10 iFindEnd=InStr(iFindStart,sInfo,"""",1) sFileName=Mid(sinfo,iFindStart,iFindEnd-iFindStart) theFile.FileName=UCase(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 ifnotobjFile.Exists(sFormName)then objFile.addsFormName,theFile endif else '如果是表单项目 tStream.Type=1 tStream.Mode=3 tStream.Open Data_5xsoft.Position=iInfoEnd Data_5xsoft.CopyTotStream,iFormStart-iInfoEnd-3 tStream.Position=0 tStream.Type=2 tStream.Charset="gb2312" sFormValue=tStream.ReadText tStream.Close ifobjForm.Exists(sFormName)then objForm(sFormName)=objForm(sFormName)&","&sFormValue else objForm.AddsFormName,sFormValue endif endif iFormStart=iFormStart+iStart+1 wend RequestData="" settStream=nothing EndSub PrivateSubClass_Terminate ifRequest.TotalBytes>0then objForm.RemoveAll objFile.RemoveAll setobjForm=nothing setobjFile=nothing Data_5xsoft.Close setData_5xsoft=nothing endif EndSub PrivatefunctionGetFilePath(FullPath) IfFullPath<>""Then GetFilePath=left(FullPath,InStrRev(FullPath,"\")) Else GetFilePath="" EndIf Endfunction PrivatefunctionGetFileName(FullPath) IfFullPath<>""Then GetFileName=mid(FullPath,InStrRev(FullPath,"\")+1) Else GetFileName="" EndIf Endfunction EndClass ClassFileInfo dimFormName,FileName,FilePath,FileSize,FileType,FileStart PrivateSubClass_Initialize FileName="" FilePath="" FileSize=0 FileStart=0 FormName="" FileType="" EndSub PublicfunctionSaveAs(FullPath) dimdr,ErrorChar,i SaveAs=true iftrim(fullpath)=""orFileStart=0orFileName=""orright(fullpath,1)="/"thenexitfunction setdr=CreateObject("Adodb.Stream") dr.Mode=3 dr.Type=1 dr.Open Data_5xsoft.position=FileStart Data_5xsoft.copytodr,FileSize dr.SaveToFileFullPath,2 dr.Close setdr=nothing SaveAs=false endfunction EndClass %> 3.创建conn.asp文件,用来各动态网页连接数据库 其代码如下: <% '打开数据库连接? db="admin/myfile.mdb" Setconn=Server.CreateObject("ADODB.Connection") connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(""&db&"") conn.Openconnstr %> 4.创建admin_index.asp文件,该文件用来提供上传界面 admin_index.asp文件的设计视图如下: admin_index.asp文件的代码视图如下:
5.创建postnew.asp文件,该文件具体完成图片的上传功能
postnew.asp文件的设计视图如下:
postnew.asp文件的代码视图如下:
--#includefile="conn.asp"-->
--#includefile="upload_5xsoft.asp"-->
<%
'这是处理提交过来的数据的页面
formpath="uploadfile/"
'设置上传的文件夹名
setupload=newupload_5xsoft
'实例化一个上传对象upload,这个无组件上传类最大只能上200K的文件,上传超过200K文件,将会非常的慢,如果想上传更大的文件,可以使用有组件上传
functionup_pic()'这是一个上传函数
iCount=0
'记录上传图片数
foreachformNameinupload.objFile'列出所有上传了的文件
setfile=upload.file(formName)'生成一个文件对象
intFileSize=file.FileSize
iffile.FileSize>0andfile.filesize<=2621440then'如果FileSize>0说明有文件数据
FileNameext=LCase(Right(file.fileName,4))
'取文件名的后四位字符,并转成小写
ifFileNameext=".jpg"orFileNameext=".gif"orFileNameext=".GIF"orFileNameext=".JPG"then
'判断图片的格式,你也可以去掉不判断
Pic_Name=file.fileName'将文件名赋值给变量Pic_Name
file.SaveAsServer.mappath(formPath&file.FileName)
''保存文件
iCount=iCount+1
else
response.write"
response.write"alert('你上传的图片格式不正确');"
response.write"history.go(-1);"
response.write""
response.end
endif
else
iffile.filesize>2621440then'如果文件大于256K,这个数值你可以自己算256×1024
response.write"
response.write"alert('上传的图片大于256K,上传失败!
');"
response.write"history.go(-1);"
response.write""
response.end
endif
endif
setfile=nothing
next
up_pic=Pic_Name
'本函数的作用是,将上传的图片上传到文件夹中,并将文件名返回
endfunction
picname=up_pic()'调用up_pic()函数,返回文件名
setrs=server.CreateObject("adodb.recordset")
'建立一个记录集对象rs
sql="select*frommyfile"
rs.opensql,conn,1,3'打开记录集参数1,3表示可以修改方式打开
rs.addnew
rs("upname")=trim(upload.form("upname"))
'这里要注意,必须用upload.form来获取表单的值,和平常不一样,不能用request.form
rs("filename")=picname
rs("uptime")=now()
rs.update
rs.close'使用完后关闭记录集setrs=nothing
conn.close'关闭数据库连接对象setconn=nothing
%>
至此,图片上传的后台就创建好了,可以进行测试,上传图片,上传的图片文件自动到admin/uploadfile文件夹中,文件的路径记录在数据库文件myfile.mdb中的表文件myfile的filename字段中。
三、图片的分页显示,能够实现分页功能,并能实现一页显示多行,一行显示多列图片
1.再创建一个conn.asp文件,该文件的内容如下所示
(注意与admin文件夹中conn.asp文件内容做对比,仅区别在数据库的路径上,其他内容均一样)
<%
'打开数据库连接?
db="admin/myfile.mdb"
Setconn=Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(""&db&"")
conn.Openconnstr
%>
2.创建index.asp文件
index.asp文件的设计视图如下:
index.asp文件的代码视图如下:
--#includefile="conn.asp"-->
<%
dimrs,listnum,page,i
setrs=server.createobject("adodb.recordset")
sql="select*frommyfile"
rs.opensql,conn,1,1
ifrs.eofthen
response.Write("
else
listnum=8
rs.pagesize=listnum
page=request("page")
ifpage=""orpage<1then
page=1
elseifrs.pagecount-page<0then
page=rs.pagecount
endif
rs.absolutepage=page
i=1
dowhilenotrs.eofandi<=listnum
%>
5px;padding-right: 5px;padding-left: 5px;padding-bottom: 5px;"align="center"valign="middle"bgcolor="#F3F3F3"class="line"> id=<%=rs("id")%>">
<%
ifimod4=0thenresponse.Write"
rs.movenext
i=i+1
loop
%>
每页<%=listnum%>条记录共<%=rs.recordcount%>条当前<%=page%>/<%=rs.pagecount%>页 | page=<%=page-1%>">上一页| page=<%=page+1%>">下一页| page=<%=rs.pagecount%>">末页| window.open('? page='+this.options[this.selectedIndex].value,'_self')"> <% forpage=1tors.pageCount ifpage=cint(pageNo)then%> 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1