动态网页开发基础实训指导书第十三次实训.docx
- 文档编号:8118796
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:9
- 大小:18.34KB
动态网页开发基础实训指导书第十三次实训.docx
《动态网页开发基础实训指导书第十三次实训.docx》由会员分享,可在线阅读,更多相关《动态网页开发基础实训指导书第十三次实训.docx(9页珍藏版)》请在冰豆网上搜索。
动态网页开发基础实训指导书第十三次实训实训十三ASP+access实现无组件上传图片本次实训的最终目的是将图片文件上传到文件夹,并将文件名写入数据库中。
一、建立数据库myfile.mdb,建表myfile,表中有四个字段id(自动编号),upname(文本,表示上传者名字),filename(文本,表示上传后的文件名),uptime(日期/时间,表示上传的时间)。
二、建立一个名为myfile的文件夹,用来放上传后的图片。
三、代码部分1、upload_5xsoft.asp(这是一个写好的上传类,一会将该文件包含进去,只要会用就可以了)%dimData_5xsoftClassupload_5xsoftdimobjForm,objFile,VersionPublicfunctionForm(strForm)strForm=lcase(strForm)ifnotobjForm.exists(strForm)thenForm=elseForm=objForm(strForm)endifendfunctionPublicfunctionFile(strFile)strFile=lcase(strFile)ifnotobjFile.exists(strFile)thensetFile=newFileInfoelsesetFile=objFile(strFile)endifendfunctionPrivateSubClass_InitializedimRequestData,sStart,vbCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFiledimiFileSize,sFilePath,sFileType,sFormValue,sFileNamedimiFindStart,iFindEnddimiFormStart,iFormEnd,sFormNameVersion=!
小陈跑跑!
setobjForm=Server.CreateObject(Scripting.Dictionary)setobjFile=Server.CreateObject(Scripting.Dictionary)ifRequest.TotalBytes<1thenExitSubsettStream=Server.CreateObject(adodb.stream)setData_5xsoft=Server.CreateObject(adodb.stream)Data_5xsoft.Type=1Data_5xsoft.Mode=3Data_5xsoft.OpenData_5xsoft.WriteRequest.BinaryRead(Request.TotalBytes)Data_5xsoft.Position=0RequestData=Data_5xsoft.ReadiFormStart=1iFormEnd=LenB(RequestData)vbCrlf=chrB(13)&chrB(10)sStart=MidB(RequestData,1,InStrB(iFormStart,RequestData,vbCrlf)-1)iStart=LenB(sStart)iFormStart=iFormStart+iStart+1while(iFormStart+10)iFormEndiInfoEnd=InStrB(iFormStart,RequestData,vbCrlf&vbCrlf)+3tStream.Type=1tStream.Mode=3tStream.OpenData_5xsoft.Position=iFormStartData_5xsoft.CopyTotStream,iInfoEnd-iFormStarttStream.Position=0tStream.Type=2tStream.Charset=gb2312sInfo=tStream.ReadTexttStream.Close取得表单项目名称iFormStart=InStrB(iInfoEnd,RequestData,sStart)iFindStart=InStr(22,sInfo,name=,1)+6iFindEnd=InStr(iFindStart,sInfo,1)sFormName=lcase(Mid(sinfo,iFindStart,iFindEnd-iFindStart)如果是文件ifInStr(45,sInfo,filename=,1)0thensettheFile=newFileInfo取得文件名iFindStart=InStr(iFindEnd,sInfo,filename=,1)+10iFindEnd=InStr(iFindStart,sInfo,1)sFileName=Mid(sinfo,iFindStart,iFindEnd-iFindStart)sFileName=replace(cstr(now(),:
)theFile.FileName=getFileName(sFileName)theFile.FilePath=getFilePath(sFileName)取得文件类型iFindStart=InStr(iFindEnd,sInfo,Content-Type:
1)+14iFindEnd=InStr(iFindStart,sInfo,vbCr)theFile.FileType=Mid(sinfo,iFindStart,iFindEnd-iFindStart)theFile.FileStart=iInfoEndtheFile.FileSize=iFormStart-iInfoEnd-3theFile.FormName=sFormNameifnotobjFile.Exists(sFormName)thenobjFile.addsFormName,theFileendifelse如果是表单项目tStream.Type=1tStream.Mode=3tStream.OpenData_5xsoft.Position=iInfoEndData_5xsoft.CopyTotStream,iFormStart-iInfoEnd-3tStream.Position=0tStream.Type=2tStream.Charset=gb2312sFormValue=tStream.ReadTexttStream.CloseifobjForm.Exists(sFormName)thenobjForm(sFormName)=objForm(sFormName)&,&sFormValueelseobjForm.AddsFormName,sFormValueendifendifiFormStart=iFormStart+iStart+1wendRequestdatasettStream=nothingEndSubPrivateSubClass_TerminateifRequest.TotalBytes0thenobjForm.RemoveAllobjFile.RemoveAllsetobjForm=nothingsetobjFile=nothingData_5xsoft.ClosesetData_5xsoft=nothingendifEndSubPrivatefunctionGetFilePath(FullPath)IfFullPathThenGetFilePath=left(FullPath,InStrRev(FullPath,)ElseGetFilePath=EndIfEndfunctionPrivatefunctionGetFileName(FullPath)RandomizeIfFullPathThenGetFileName=replace(replace(replace(cstr(now(),:
),),-,)&mid(FullPath,InStrRev(FullPath,)+1)tmpFile_Name=mid(FullPath,InStrRev(FullPath,)+1)tmp_instr=len(tmpFile_Name)-InStrRev(tmpFile_Name,.)+1tmpFile_Name=right(tmpFile_Name,tmp_instr)GetFileName=replace(replace(replace(cstr(now(),:
),),-,)&Cstr(Int(10000000*Rnd)&VKEY&tmpFile_NameElseGetFileName=EndIfEndfunctionEndClassClassFileInfodimFormName,FileName,FilePath,FileSize,FileType,FileStartPrivateSubClass_InitializeFileName=FilePath=FileSize=0FileStart=0FormName=FileType=EndSubPublicfunctionSaveAs(FullPath)dimdr,ErrorChar,iSaveAs=trueiftrim(fullpath)=orFileStart=0orFileName=orright(fullpath,1)=/thenexitfunctionsetdr=CreateObject(Adodb.Stream)dr.Mode=3dr.Type=1dr.OpenData_5xsoft.position=FileStartData_5xsoft.copytodr,FileSizedr.SaveToFileFullPath,2dr.Closesetdr=nothingSaveAs=falseendfunctionEndClass%二、conn.asp(数据库连接代码,一会包含使用)%打开数据库连接db=myfile.mdbSetconn=Server.CreateObject(ADODB.Connection)connstr=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=&Server.MapPath(&db&)如果你的服务器采用较老版本Access驱动,请用下面连接方法connstr=driver=MicrosoftAccessDriver(*.mdb);dbq=&Server.MapPath(db)conn.Openconnstr%三、index.asp上传者:
图片文件:
ahref=myfile/target=_blank点击查看文件夹上传时间:
上传者:
上传图片:
四、postnew.asp(处理表单数据的文件)%这是处理提交过来的数据的页面formpath=myfile/设置上传的文件夹名url=index.asp上传完后,返回到的页面。
setupload=newupload_5xsoft实例化一个上传对象upload,这个无组件上传类最大只能上200K的文件,上传超过200K文件,将会非常的慢,如果想上传更大的文件,可以使用有组件上传functionup_pic()这是一个上传函数iCount=0记录上传图片数foreachformNameinupload.objFile列出所有上传了的文件setfile=upload.file(formName)生成一个文件对象intFileSize=file.FileSizeiffile.FileSize0andfile.filesize0说明有文件数据FileNameext=LCase(Right(file.fileName,4)最文件名的后四位字符,并转成小写ifFileNameext=.jpgorFileNameext=.giforFileNameext=.GIForFileNameext=.JPGthen判断图片的格式,你也可以去掉不判断Pic_Name=file.fileName将文件名赋值给变量Pic_Namefile.SaveAsServer.mappath(formPath&file.FileName)保存文件iCount=iCount+1elseresponse.writeresponse.writealert(你上传的图片格式不正确);response.writehistory.go(-1);response.writeresponse.endendifelseiffile.filesize262144then如果文件大于256K,这个数值你可以自己算2561024response.writeresponse.writealert(上传的图片大于256K,上传失败!
);response.writehistory.go(-1);response.writeresponse.endendifendifsetfile=nothingnextup_pic=Pic_Name本函数的作用是,将上传的图片上传到文件夹中,并将文件名返回endfunctionpicname=up_pic()调用up_pic()函数,返回文件名setrs=server.CreateObject(adodb.recordset)建立一个记录集对象rssql=select*frommyfilers.opensql,conn,1,3打开记录集参数1,3表示可以修改方式打开rs.addnewrs(upname)=trim(upload.form(upname)这里要注意,必须用upload.form来获取表单的值,和平常不一样,不能用request.formrs(filename)=picnamers(uptime)=now()rs.updaters.close使用完后关闭记录集setrs=nothingconn.close关闭数据库连接对象setconn=nothing%METAHTTP-EQUIV=“refresh”CONTENT=0;url=;charset=gb2312
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 网页 开发 基础 指导书 第十 三次