1、信阳毛尖南阳茶叶店网站后台文件上传图片保存页面源代码!-#include virtual=此类在初始化时完成扫描此类不能处理有重名项的表单Response.Expires = 0 Response.Expiresabsolute = Now() - 1 Response.AddHeader pragma,no-cache Response.AddHeader cache-control,private Response.CacheControl = no-cacheServer.ScriptTimeOut = 120Class QuickUploadPrivate FForm, FFile,
2、Upload_Streamproperty get Form set Form = FFormend propertyproperty get File set File = FFileend propertyPrivate Sub Class_Initialize dim iStart, iEnd, boundary, FieldName, FileName, ContentType, ItemValue, theFile set FForm=CreateObject(Scripting.Dictionary) set FFile=CreateObject() set Upload_Stre
3、am=CreateObject(Adodb.Stream) Upload_Stream.mode=3 Upload_Stream.type=1 Upload_Stream.open if Request.TotalBytes 1 then Exit Sub dStart = CDbl(Time) dim nByte nByte = 65536 do while nByte=65536 Upload_Stream.write Request.BinaryRead(nByte) loop Response.Write read time: & (CDbl(Time)-dStart)*24*60*6
4、0 & dStart = CDbl(Time) 查找第一个边界 iStart=1 boundary=GetALine(iStart) iStart=GetAChunk(1, ChrB(13)&ChrB(10), false, null) boundary=subString(1,iStart-2-1) 不是结束边界,则循环 do while StrComp(subString(iStart-2,2),ChrB(45)&ChrB(45)0 取表单项信息头 iStart = ParseHeader(iStart, FieldName, FileName, ContentType) 取表单项内容 i
5、f FileName then set theFile = new FileInfo theFile.Init FileName, ContentType set dest = theFile.Stream iNewStart=GetAChunk(iStart, boundary, true, dest, www.zhongguopingan.org) FFile.add FieldName, theFile else iNewStart=GetAChunk(iStart, boundary, false, null) FForm.Add FieldName, ByteToStr(subStr
6、ing(iStart,iNewStart-iStart-LenB(boundary)-2) end if iStart = iNewStart+2 loop Response.Write parse time: & (CDbl(Time)-dStart)*24*60*60 & End Sub private function ParseHeader(theStart, byref FieldName, byref FileName, byref ContentType) iStart = theStart do while true 取一行 iNewStart=GetAChunk(iStart
7、, ChrB(13)&ChrB(10), false, null) Line = ByteToStr(subString(iStart,iNewStart-2-iStart) iStart=iNewStart 空行,则跳出循环 if Line=null or Line= then Exit do pos = instr(Line,:) if pos0 then if StrComp(left(Line,pos-1),Content-Disposition,1)=0 then 取表单项名称 FieldName = ExtractValue(Line,pos+1,name) 取文件名称 FileN
8、ame = ExtractValue(Line,pos+1,) 删除文件路径 FileName = Mid(FileName,InStrRev(FileName, )+1) elseif StrComp(left(Line,pos-1),Content-Type,1)=0 then 取文件类型 ContentType = trim(mid(Line,pos+1) end if end if loop ParseHeader = iStartend functionPrivate Function GetAChunk(theStart, delimiter, isFile, dest) iSta
9、rt = theStart pos=0 do while pos=0 长度不够,读一块 if Upload_Stream.Size+1-iStart0 then n1 = p+len(t) n2 = instr(n1,line,) if n2n1 then ExtractValue = mid(line,n1,n2-n1) end ifend functionPrivate Function subString(,theLen) if theLen0 then Upload_Stream.Position=theStart-1 subString = midb(Upload_Stream.Re
10、ad(theLen),1) else subString = end ifEnd functionPrivate function ByteToStr(vIn)dim i,cByteToStr=for i=1 to LenB(vIn) c=ascB(midB(vIn,i,1) If c 127 Then if i=LenB(vIn) then Exit ForByteToStr = ByteToStr & Chr(AscW(ChrB(AscB(www.bj-(vIn,i+1,1)&ChrB(c) i=i+1 else ByteToStr = ByteToStr & Chr(c) End IfN
11、extend functionPrivate Sub Class_Terminate form.RemoveAll file.RemoveAll set form=nothing set file=nothing Upload_Stream.close set Upload_Stream=nothingEnd SubEnd ClassClass FileInfo Private FFileName, , FFileStart, FFileSize, FStreamproperty get FileName FileName = FFileNameend propertyproperty get
12、 ContentType ContentType = FContentTypeend propertyproperty get FileSize FileSize = FFileSizeend propertyproperty get Stream set Stream = FStreamend propertyPublic Sub Init(, AContentType) FFileName = AFileName FContentType = AContentTypeEnd SubPublic function SaveAs(FullPath) dim dr,ErrorChar,i dSt
13、art = CDbl(Time) SaveAs=1 if trim(fullpath)= or right(fullpath,1)= then exit function On Error Resume Next FStream.SaveToFile FullPath,2 if Err.Number0 then Response.Write 保存数据出错: & Err.Description & SaveAs=0 Response.Write save time: & (CDbl(Time)-dStart)*24*60*60 & end functionPrivate Sub Class_In
14、itialize set FStream=CreateObject(Adodb.Stream) FStream.mode=3 FStream.type=1 FStream.openend subPrivate Sub Class_Terminate FStream.Close set FStream=nothing end subEnd Class上传LOGObody font-size:12px; margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px;td font-size:12px; /双击选择文
15、件function selImgSrc(src) top.dialogArguments.document.all().value= + src; window.close();%IsTitleImage =Forms(IsTitleImage)TitleImageSize =Forms(TitleImageSize)If TitleImageSize = 0 Then TitleImageWidth =Forms(TitleImageWidth) TitleImageHeight =Forms(TitleImageHeight)Else TitleImageWidth = Split(Tit
16、leImageSize,)(0) TitleImageHeight = Split(TitleImageSize,)(1)End IfIsAddWater =Forms(IsAddWater)isBack =Forms(isBack)Files = upload.File.Itemsfor i=0 to upload.File.Count-1 set file = Files(i) FileTypes=Split(file.FileName,.) fileExt = lcase(FileTypes(UBound(FileTypes) 限制上传的文件类型 If fileExt=asp or fi
17、leExt=aspx or fileExt=asa or fileExt=php or fileExt=exe or fileExt=dll or fileExt=bat Then Response.Write(禁止上传的文件格式,重新上传):Response.End() End If 只允许上传的文件 If Instr(fileType,fileExt) = 0 AND fileType Then Response.Write(只允许上传|&fileType&类型的文件,重新上传):Response.End() End If If Forms(SaveNameType)=YES Then F
18、ileName=Common_Class_new.CreatStrId & . & fileExt Else FileName=file.FileName End If FileName = Replace(FileName,;,) Select Case f Case SelSiteMod 上传模板 FilePath=Server.mappath(& UpPath &/mod.gif) rContent =上传成功,关闭 Case Else FilePath=Server.mappath(UpPath & FileName) rContent =selImgSrc(& FileName &)
19、; End Select file.SaveAs(FilePath) set file=nothing If (fileExt=jpg or fileExt=jpeg or fileExt=gif or fileExt=png) Then If IsTitleImage = on Then Set Jpeg = Server.CreateObject(Persits.Jpeg) 创建实例 Jpeg.Open FilePath 打开图片 调整宽度和高度为原来的50% Jpeg.Width = TitleImageWidth Jpeg.Height = TitleImageHeight Jpeg.
20、Save FilePath 保存图片到磁盘 Jpeg.Close:Set Jpeg = Nothing End If 加水印 If IsAddWater = on Then SourceFile = Server.MapPath(configurationWaterMark.xml) Set objXML = Server.CreateObject() objXML.Load SourceFile set objnode=objXML.documentElement.SelectSingleNode(/data/WaterMark) WaterMarkPosition = objnode.At
21、tributes.item(0).Text WaterMarkTransparency = objnode.Attributes.item(1).Text IsImageWaterMark = objnode.Attributes.item(2).Text WaterMarkFormatString = objnode.Attributes.item(3).Text WaterMarkFormatString = Replace(WaterMarkFormatString,1, Date() WaterMarkFormatString = Replace(WaterMarkFormatStri
22、ng,2, Time() WaterMarkFontName = objnode.Attributes.item(4).Text WaterMarkFontSize = objnode.Attributes.item(5).Text WaterMarkImagePath = objnode.Attributes.item(6).Text Select Case IsImageWaterMark Case True 图片 建立图片对象 Set Photo = Server.createObject(Persits.Jpeg) 打开图片 Photo.Open FilePath 建立LOGO对象 S
23、et Logo = Server.createObject() LOGO位置 LogoPath = Server.MapPath(WaterMarkImagePath) 打开LOGO Logo.Open LogoPath 设置LOGO大小 Logo.Width = 90 Logo.Height = Logo.Width * Logo.OriginalHeight / Logo.OriginalWidth 设置图片水印位置,LOGO 透明度,抽取 LOGO 背景颜色(白色),并删除 Select Case WaterMarkPosition Case 1 Draw_Left = 0 : Draw_Top = 0 Case 2 Draw_Left = (Photo.Width - Logo.Width)/2 : Draw_Top = 0 Case 3 Draw_Left = (Photo.Width - Logo.Width) : Draw_Top = 0 Case 4 Draw_Left = 0 : Draw_Top = (Photo.Height - Logo.Height