ASP图片上传处理模块

<!--#i nclude FILE="Upload.inc"--> 
<% 
'----------------------------------------------------------------------- 
'--- 上传处理类模块 
'--- Copyright (c) 2004 Aspsky, Inc. 
'--- Mail: Sunwin@artbbs.net http://www.aspsky.net 
'--- 2004-12-18 
'----------------------------------------------------------------------- 
'----------------------------------------------------------------------- 
'-- InceptFileType : 设置上传类型属性 (以逗号分隔多个文件类型) String 
'-- MaxSize : 设置上传文件大小上限 (单位:kb) Long 
'-- InceptMaxFile : 设置一次上传文件最大个数 Long 
'-- UploadPath : 设置保存的目录相对路径 String 
'-- UploadType : 设置上传组件类型 (0=无组件上传类,1=Aspupload3.0 ,2=SA-FileUp 4.0 ,3=DvFile.Upload V1.0'-- SaveUpFile : 执行上传 
'-- GetBinary : 设置上传是否返回文件数据流 Bloon值 : True/False 
'-- ChkSessionName : 设置SESSION名,防止重复提交,SESSION名与提交的表单名要一致。 
'-- RName设置文件名 : 定义文件名前缀 (如默认生成的文件名为200412230402587123.jpg 
' 设置:RName="PRE_",生成的文件名为:PRE_200412230402587123.jpg) 
'----------------------------------------------------------------------- 
'-- 设置图片组件属性 
'-- PreviewType : 设置组件(0=CreatePreviewImage组件,1=AspJpegV1.2 ,2=SoftArtisans ImgWriter V1.21) 
'-- PreviewImageWidth : 设置预览图片宽度 
'-- PreviewImageHeight : 设置预览图片高度 
'-- DrawImageWidth : 设置水印图片或文字区域宽度 
'-- DrawImageHeight : 设置水印图片或文字区域高度 
'-- DrawGraph : 设置水印图片或文字区域透明度 
'-- DrawFontColor : 设置水印文字颜色 
'-- DrawFontFamily : 设置水印文字字体格式 
'-- DrawFontSize : 设置水印文字字体大小 
'-- DrawFontBold : 设置水印文字是否粗体 
'-- DrawInfo : 设置水印文字信息或图片信息 
'-- DrawType : 设置加载水印模式:0=不加载水印 ,1=加载水印文字 ,2=加载水印图片 
'-- DrawXYType : 图片添加水印LOGO位置坐标:"0" =左上,"1"=左下,"2"=居中,"3"=右上,"4"=右下 
'-- DrawSizeType : 生成预览图片大小规则:"0"=固定缩小,"1"=等比例缩小 
'----------------------------------------------------------------------- 
'-- 获取上传信息 
'-- ObjName : 采用的组件名称 
'-- Count : 上传文件总数 
'-- CountSize : 上传总大小字节数 
'-- ErrCodes : 错误NUMBER (默认为0) 
'-- Description : 错误描述 
'----------------------------------------------------------------------- 
'-- CreateView Imagename,TempFilename,FileExt 
' 创建预览图片过程: 原始文件的相对路径,生成预览文件相对路径,原文件后缀 
'----------------------------------------------------------------------- 
'----------------------------------------------------------------------- 
'-- 获取文件对象属性 : UploadFiles 
'-- FormName : 表单名称 
'-- FileName : 生成的文件名称 
'-- FilePath : 保存文件的相对路径 
'-- FileSize : 文件大小 
'-- FileContentType : ContentType文件类型 
'-- FileType : 0=其它,1=图片,2=FLASH,3=音乐,4=电影 
'-- FileData : 文件数据流 (若组件不支持直接获取,则返回Null) 
'-- FileExt : 文件后缀 
'-- FileWidth : 图片/Flash文件宽度 (其他文件默认=-1) 
'-- FileHeight : 图片/Flash文件高度 (其他文件默认=-1) 
'----------------------------------------------------------------------- 
'----------------------------------------------------------------------- 
'-- 获取表单对象属性 : UploadForms 
'-- Count : 表单数 
'-- key : 表单内容 
'----------------------------------------------------------------------- 
'----------------------------------------------------------------------- 
Class UpFile_Cls 
Private UploadObj,ImageObj 
Private FilePath,InceptFile,FileMaxSize,MaxFile,Upload_Type,FileInfo,IsBinary,SessionName 
Private Preview_Type,View_ImageWidth,View_ImageHeight,Draw_ImageWidth,Draw_ImageHeight,Draw_Graph 
Private Draw_FontColor,Draw_FontFamily,Draw_FontSize,Draw_FontBold,Draw_Info,Draw_Type,Draw_XYType,Draw_SizeType 
Private RName_Str,Transition_Color 
Public ErrCodes,ObjName,UploadFiles,UploadForms,Count,CountSize 
'----------------------------------------------------------------------------------- 
'初始化类 
'----------------------------------------------------------------------------------- 
Private Sub Class_Initialize 
SessionName = Empty 
IsBinary = False 
ErrCodes = 0 
Count = 0 
CountSize = 0 
FilePath = "./" 
InceptFile = "" 
FileMaxSize = -1 
MaxFile = 1 
Upload_Type = -1 
Preview_Type = 999 
ObjName = "未知组件" 
View_ImageWidth = 0 
View_ImageHeight = 0 
Draw_FontColor = &H000000 
Draw_FontFamily = "Arial" 
Draw_FontSize = 10 
Draw_FontBold = False 
Draw_Info = "WWW.OIOJ.NET" 
Draw_Type = -1 
Set UploadFiles = Server.CreateObject ("Scripting.Dictionary") 
Set UploadForms = Server.CreateObject ("Scripting.Dictionary") 
UploadFiles.CompareMode = 1 
UploadForms.CompareMode = 1 
End Sub 

'----------------------------------------------------------------------------------- 
'销毁类 
'----------------------------------------------------------------------------------- 
Private Sub Class_Terminate 
If IsObject(UploadObj) Then 
Set UploadObj = Nothing 
End If 
If IsObject(ImageObj) Then 
Set ImageObj = Nothing 
End If 
UploadFiles.RemoveAll 
UploadForms.RemoveAll 
Set UploadForms = Nothing 
Set UploadFiles = Nothing 
End Sub 

'----------------------------------------------------------------------------------- 
'设置上传是否返回文件数据流 
'----------------------------------------------------------------------------------- 
Public Property Let GetBinary(Byval Values) 
IsBinary = Values 
End Property 

'----------------------------------------------------------------------------------- 
'设置上传类型属性 (以逗号分隔多个文件类型) 
'----------------------------------------------------------------------------------- 
Public Property Let InceptFileType(Byval Values) 
InceptFile = Lcase(Values) 
End Property 

'----------------------------------------------------------------------------------- 
'设置上传类型属性 (以逗号分隔多个文件类型) 
'----------------------------------------------------------------------------------- 
Public Property Let ChkSessionName(Byval Values) 
SessionName = Values 
End Property 

'----------------------------------------------------------------------------------- 
'设置上传文件大小上限 (单位:kb) 
'----------------------------------------------------------------------------------- 
Public Property Let MaxSize(Byval Values) 
FileMaxSize = ChkNumeric(Values) * 1024 
End Property 
Public Property Get MaxSize 
MaxSize = FileMaxSize 
End Property 

'----------------------------------------------------------------------------------- 
'设置每次上传文件上限 
'----------------------------------------------------------------------------------- 
Public Property Let InceptMaxFile(Byval Values) 
MaxFile = ChkNumeric(Values) 
End Property 

'----------------------------------------------------------------------------------- 
'设置上传目录路径 
'----------------------------------------------------------------------------------- 
Public Property Let UploadPath(Byval Path) 
FilePath = Replace(Path,Chr(0),"") 
If Right(FilePath,1)<>"/" Then FilePath = FilePath & "/" 
End Property 

Public Property Get UploadPath 
UploadPath = FilePath 
End Property 

'----------------------------------------------------------------------------------- 
'获取错误信息 
'----------------------------------------------------------------------------------- 
Public Property Get Description 
Select Case ErrCodes 
Case 1 : Description = "不支持 " & ObjName & " 上传,服务器可能未安装该组件。" 
Case 2 : Description = "暂未选择上传组件!" 
Case 3 : Description = "请先选择你要上传的文件!" 
Case 4 : Description = "文件大小超过了限制 " & (FileMaxSize 1024) & "KB!" 
Case 5 : Description = "文件类型不正确!" 
Case 6 : Description = "已达到上传数的上限!" 
Case 7 : Description = "请不要重复提交!" 
Case Else 
Description = Empty 
End Select 
End Property 

'----------------------------------------------------------------------------------- 
'设置文件名前缀 
'----------------------------------------------------------------------------------- 
Public Property Let RName(Byval Values) 
RName_Str = Values 
End Property 

'----------------------------------------------------------------------------------- 
'设置上传组件属性 
'----------------------------------------------------------------------------------- 
Public Property Let UploadType(Byval Types) 
Upload_Type = Types 
If Upload_Type = "" or Not IsNumeric(Upload_Type) Then 
Upload_Type = -1 
End If 
End Property 

'----------------------------------------------------------------------------------- 
'设置上传图片组件属性 
'----------------------------------------------------------------------------------- 
Public Property Let PreviewType(Byval Types) 
Preview_Type = Types 
On Error Resume Next 
If Preview_Type = "" or Not IsNumeric(Preview_Type) Then 
Preview_Type = 999 
Else 
If PreviewType <> 999 Then 
Select Case Preview_Type 
Case 0 
'---------------------CreatePreviewImage--------------- 
ObjName = "CreatePreviewImage组件" 
Set ImageObj = Server.CreateObject("CreatePreviewImage.cGvbox") 
Case 1 
'---------------------AspJpegV1.2--------------- 
ObjName = "AspJpegV1.2组件" 
Set ImageObj = Server.CreateObject("Persits.Jpeg") 
Case 2 
'---------------------SoftArtisans ImgWriter V1.21--------------- 
ObjName = "SoftArtisans ImgWriter V1.21组件" 
Set ImageObj = Server.CreateObject("SoftArtisans.ImageGen") 
Case Else 
Preview_Type = 999 
End Select 
If Err.Number<>0 Then 
ErrCodes = 1 
End If 
End If 
End If 
End Property 

Public Property Get PreviewType 
PreviewType = Preview_Type 
End Property 

'----------------------------------------------------------------------------------- 
'设置预览图片宽度属性 
'----------------------------------------------------------------------------------- 
Public Property Let PreviewImageWidth(Byval Values) 
View_ImageWidth = ChkNumeric(Values) 
End Property 

'----------------------------------------------------------------------------------- 
'设置预览图片高度属性 
'----------------------------------------------------------------------------------- 
Public Property Let PreviewImageHeight(Byval Values) 
View_ImageHeight = ChkNumeric(Values) 
End Property 

'----------------------------------------------------------------------------------- 
'设置水印图片或文字区域宽度属性 
'----------------------------------------------------------------------------------- 
Public Property Let DrawImageWidth(Byval Values) 
Draw_ImageWidth = ChkNumeric(Values) 
End Property 

'----------------------------------------------------------------------------------- 
'设置水印图片或文字区域高度属性 
'----------------------------------------------------------------------------------- 
Public Property Let DrawImageHeight(Byval Values) 
Draw_ImageHeight = ChkNumeric(Values) 
End Property 

'----------------------------------------------------------------------------------- 
'设置水印图片或文字区域透明度属性 
'----------------------------------------------------------------------------------- 
Public Property Let DrawGraph(Byval Values) 
If IsNumeric(Values) Then 
Draw_Graph = Formatnumber(Values,2) 
Else 
Draw_Graph = 1 
End If 
End Property 

'----------------------------------------------------------------------------------- 
'设置水印图片透明度去除底色值 
'----------------------------------------------------------------------------------- 
Public Property Let TransitionColor(Byval Values) 
If Values<>"" or Values<>"0" Then 
Transition_Color = Replace(Values,"#","&h") 
End If 
End Property 

'----------------------------------------------------------------------------------- 
'设置水印文字颜色 
'----------------------------------------------------------------------------------- 
Public Property Let DrawFontColor(Byval Values) 
If Values<>"" or Values<>"0" Then 
Draw_FontColor = Replace(Values,"#","&h") 
End If 
End Property 

'----------------------------------------------------------------------------------- 
'设置水印文字字体格式 
'----------------------------------------------------------------------------------- 
Public Property Let DrawFontFamily(Byval Values) 
Draw_FontFamily = Values 
End Property 

'----------------------------------------------------------------------------------- 
'设置水印文字字体大小 
'----------------------------------------------------------------------------------- 
Public Property Let DrawFontSize(Byval Values) 
Draw_FontSize = Values 
End Property 

'----------------------------------------------------------------------------------- 
'设置水印文字是否粗体 Boolean 
'----------------------------------------------------------------------------------- 
Public Property Let DrawFontBold(Byval Values) 
Draw_FontBold = ChkBoolean(Values) 
End Property 
'----------------------------------------------------------------------------------- 
'设置水印文字信息或图片信息 
'----------------------------------------------------------------------------------- 
Public Property Let DrawInfo(Byval Values) 
Draw_Info = Values 
End Property 

'----------------------------------------------------------------------------------- 
'加载模式:0=不加载水印 ,1=加载水印文字 ,2=加载水印图片 
'----------------------------------------------------------------------------------- 
Public Property Let DrawType(Byval Values) 
Draw_Type = ChkNumeric(Values) 
End Property 

'----------------------------------------------------------------------------------- 
'图片添加水印LOGO位置坐标:"0" =左上,"1"=左下,"2"=居中,"3"=右上,"4"=右下 
'----------------------------------------------------------------------------------- 
Public Property Let DrawXYType(Byval Values) 
Draw_XYType = Values 
End Property 

'----------------------------------------------------------------------------------- 
'生成预览图片大小规则:"0"=固定缩小,"1"=等比例缩小 
'----------------------------------------------------------------------------------- 
Public Property Let DrawSizeType(Byval Values) 
Draw_SizeType = Values 
End Property 

Private Function ChkNumeric(Byval Values) 
If Values<>"" and Isnumeric(Values) Then 
ChkNumeric = Int(Values) 
Else 
ChkNumeric = 0 
End If 
End Function 

Private Function ChkBoolean(Byval Values) 
If Typename(Values)="Boolean" or IsNumeric(Values) or Lcase(Values)="false" or Lcase(Values)="true" Then 
ChkBoolean = CBool(Values) 
Else 
ChkBoolean = False 
End If 
End Function 

'----------------------------------------------------------------------------------- 
'日期时间定义文件名 
'----------------------------------------------------------------------------------- 
Private Function FormatName(Byval FileExt) 
Dim RanNum,TempStr 
Randomize 
RanNum = Int(9000*rnd)+1000 
TempStr = Year(now) & Month(now) & Day(now) & RanNum & "." & FileExt 
If RName_Str<>"" Then 
TempStr = RName_Str & TempStr 
End If 
FormatName = TempStr 
End Function 

'----------------------------------------------------------------------------------- 
'格式后缀 
'----------------------------------------------------------------------------------- 
Private Function FixName(Byval UpFileExt) 
If IsEmpty(UpFileExt) Then Exit Function 
FixName = Lcase(UpFileExt) 
FixName = Replace(FixName,Chr(0),"") 
FixName = Replace(FixName,".","") 
FixName = Replace(FixName,"'","") 
FixName = Replace(FixName,"asp","") 
FixName = Replace(FixName,"asa","") 
FixName = Replace(FixName,"aspx","") 
FixName = Replace(FixName,"cer","") 
FixName = Replace(FixName,"cdx","") 
FixName = Replace(FixName,"htr","") 
FixName = Replace(FixName,"shtml","") 
End Function 

'----------------------------------------------------------------------------------- 
'判断文件类型是否合格 
'----------------------------------------------------------------------------------- 
Private Function CheckFileExt(FileExt) 
Dim Forumupload,i 
CheckFileExt=False 
If FileExt="" or IsEmpty(FileExt) Then 
CheckFileExt = False 
Exit Function 
End If 
If FileExt="asp" or FileExt="asa" or FileExt="aspx" or FileExt="shtml" Then 
CheckFileExt = False 
Exit Function 
End If 
Forumupload = Split(InceptFile,",") 
For i = 0 To ubound(Forumupload) 
If FileExt = Trim(Forumupload(i)) Then 
CheckFileExt = True 
Exit Function 
Else 
CheckFileExt = False 
End If 
Next 
End Function 

'----------------------------------------------------------------------------------- 
'判断文件类型:0=其它,1=图片,2=FLASH,3=音乐,4=电影 
'----------------------------------------------------------------------------------- 
Private Function CheckFiletype(Byval FileExt) 
FileExt = Lcase(Replace(FileExt,".","")) 
Select Case FileExt 
Case "gif", "jpg", "jpeg","png","bmp","tif","iff" 
CheckFiletype=1 
Case "swf", "swi" 
CheckFiletype=2 
Case "mid", "wav", "mp3","rmi","cda" 
CheckFiletype=3 
Case "avi", "mpg", "mpeg","ra","ram","wov","asf" 
CheckFiletype=4 
Case Else 
CheckFiletype=0 
End Select 
End Function 

'----------------------------------------------------------------------------------- 
'执行保存上传文件 
'----------------------------------------------------------------------------------- 
Public Sub SaveUpFile() 
'On Error Resume Next 
Select Case (Upload_Type) 
Case 0 
ObjName = "无组件" 
Set UploadObj = New UpFile_Class 
If Err.Number<>0 Then 
ErrCodes = 1 
Else 
SaveFile_0 
End If 
Case 1 
ObjName = "Aspupload3.0组件" 
Set UploadObj = Server.CreateObject("Persits.Upload") 
If Err.Number<>0 Then 
ErrCodes = 1 
Else 
SaveFile_1 
End If 
Case 2 
ObjName = "SA-FileUp 4.0组件" 
Set UploadObj = Server.CreateObject("SoftArtisans.FileUp") 
If Err.Number<>0 Then 
ErrCodes = 1 
Else 
SaveFile_2 
End If 
Case 3 
ObjName = "DvFile.Upload V1.0组件" 
Set UploadObj = Server.CreateObject("DvFile.Upload") 
If Err.Number<>0 Then 
ErrCodes = 1 
Else 
SaveFile_3 
End If 
Case Else 
ErrCodes = 2 
End Select 
End Sub 

''----------------------------------------------------------------------------------- 
' 上传处理过程 
''----------------------------------------------------------------------------------- 
''----------------------------------------------------------------------------------- 
''无组件上传 
''----------------------------------------------------------------------------------- 
Private Sub SaveFile_0() 
Dim FormName,Item,File 
Dim FileExt,FileName,FileType,FileToBinary 
UploadObj.InceptFileType = InceptFile 
UploadObj.MaxSize = FileMaxSize 
UploadObj.GetDate () '取得上传数据 
FileToBinary = Null 
If Not IsEmpty(SessionName) Then 
If Session(SessionName) <> UploadObj.Form(SessionName) or Session(SessionName) = Empty Then 
ErrCodes = 7 
Exit Sub 
End If 
End If 
If UploadObj.Err > 0 then 
Select Case UploadObj.Err 
Case 1 : ErrCodes = 3 
Case 2 : ErrCodes = 4 
Case 3 : ErrCodes = 5 
End Select 
Exit Sub 
Else 
For Each FormName In UploadObj.File ''列出所有上传了的文件 
If Count>MaxFile Then 
ErrCodes = 6 
Exit Sub 
End If 
Set File = UploadObj.File(FormName) 
FileExt = FixName(File.FileExt) 
If CheckFileExt(FileExt) = False then 
ErrCodes = 5 
EXIT SUB 
End If 
FileName = FormatName(FileExt) 
FileType = CheckFiletype(FileExt) 
If IsBinary Then 
FileToBinary = File.FileData 
End If 
If File.FileSize>0 Then 
File.SaveToFile Server.Mappath(FilePath & FileName) 
AddData FormName , _ 
FileName , _ 
FilePath , _ 
File.FileSize , _ 
File.FileType , _ 
FileType , _ 
FileToBinary , _ 
FileExt , _ 
File.FileWidth , _ 
File.FileHeight 
Count = Count + 1 
CountSize = CountSize + File.FileSize 
End If 
Set File=Nothing 
Next 
For Each Item in UploadObj.Form 
If UploadForms.Exists (Item) Then _ 
UploadForms(Item) = UploadForms(Item) & ", " & UploadObj.Form(Item) _ 
Else _ 
UploadForms.Add Item , UploadObj.Form(Item) 
Next 
If Not IsEmpty(SessionName) Then Session(SessionName) = Empty 
End If 
End Sub 
''----------------------------------------------------------------------------------- 
''Aspupload3.0组件上传 
''----------------------------------------------------------------------------------- 
Private Sub SaveFile_1() 
Dim FileCount 
Dim FormName,Item,File 
Dim FileExt,FileName,FileType,FileToBinary 
UploadObj.OverwriteFiles = False '不能复盖 
UploadObj.IgnoreNoPost = True 
UploadObj.SetMaxSize FileMaxSize, True '限制大小 
FileCount = UploadObj.Save 
FileToBinary = Null 
If Not IsEmpty(SessionName) Then 
If Session(SessionName) <> UploadObj.Form(SessionName) or Session(SessionName) = Empty Then 
ErrCodes = 7 
Exit Sub 
End If 
End If 

If Err.Number = 8 Then 
ErrCodes = 4 
EXIT SUB 
Else 
If Err <> 0 Then 
ErrCodes = -1 
Response.Write "错误信息: " & Err.Description 
EXIT SUB 
End If 
If FileCount < 1 Then 
ErrCodes = 3 
EXIT SUB 
End If 
For Each File In UploadObj.Files '列出所有上传文件 
If Count>MaxFile Then 
ErrCodes = 6 
Exit Sub 
End If 
FileExt = FixName(Replace(File.Ext,".","")) 
If CheckFileExt(FileExt) = False then 
ErrCodes = 5 
EXIT SUB 
End If 
FileName = FormatName(FileExt) 
FileType = CheckFiletype(FileExt) 
If IsBinary Then 
FileToBinary = File.Binary 
End If 
'File.Filename 
If File.Size>0 Then 
File.SaveAs Server.Mappath(FilePath & FileName) 
AddData File.Name , _ 
FileName , _ 
FilePath , _ 
File.Size , _ 
File.ContentType , _ 
FileType , _ 
FileToBinary , _ 
FileExt , _ 
File.ImageWidth , _ 
File.ImageHeight 
Count = Count + 1 
CountSize = CountSize + File.Size 
End If 
Next 
For Each Item in UploadObj.Form 
If UploadForms.Exists (Item) Then _ 
UploadForms(Item) = UploadForms(Item) & ", " & Item.Value _ 
Else _ 
UploadForms.Add Item.Name , Item.Value 
Next 
If Not IsEmpty(SessionName) Then Session(SessionName) = Empty 
End If 
End Sub 
''----------------------------------------------------------------------------------- 
''SA-FileUp 4.0组件上传FileUpSE V4.09 
''----------------------------------------------------------------------------------- 
Private Sub SaveFile_2() 
Dim FormName,Item,File,FormNames 
Dim FileExt,FileName,FileType,FileToBinary 
Dim Filesize 
FileToBinary = Null 
If Not IsEmpty(SessionName) Then 
If Session(SessionName) <> UploadObj.Form(SessionName) or Session(SessionName) = Empty Then 
ErrCodes = 7 
Exit Sub 
End If 
End If 
For Each FormName In UploadObj.Form 
FormNames = "" 
If IsObject(UploadObj.Form(FormName)) Then 
If Not UploadObj.Form(FormName).IsEmpty Then 
UploadObj.Form(FormName).Maxbytes = FileMaxSize '限制大小 
UploadObj.OverWriteFiles = False 
Filesize = UploadObj.Form(FormName).TotalBytes 
If Err.Number<>0 Then 
ErrCodes = -1 
Response.Write "错误信息: " & Err.Description 
EXIT SUB 
End If 
If Filesize>FileMaxSize then 
ErrCodes = 4 
Exit sub 
End If 
FileName = UploadObj.Form(FormName).ShortFileName '原文件名 
FileExt = Mid(Filename, InStrRev(Filename, ".")+1) 
FileExt = FixName(FileExt) 
If CheckFileExt(FileExt) = False then 
ErrCodes = 5 
EXIT SUB 
End If 
FileName = FormatName(FileExt) 
FileType = CheckFiletype(FileExt) 
'If IsBinary Then 
'FileToBinary = UploadContents (2) 
'End If 
'保存文件 
If Filesize>0 Then 
UploadObj.Form(FormName).SaveAs Server.MapPath(FilePath & FileName) 
AddData FormName , _ 
FileName , _ 
FilePath , _ 
FileSize , _ 
UploadObj.Form(FormName).ContentType , _ 
FileType , _ 
FileToBinary , _ 
FileExt , _ 
-1 , _ 
-1 
Count = Count + 1 
CountSize = CountSize + Filesize 
End If 
Else 
ErrCodes = 3 
EXIT SUB 
End If 
Else 
If UploadObj.FormEx(FormName).Count > 1 Then 
For Each FormNames In UploadObj.FormEx(FormName) 
FormNames = FormNames & ", " & FormNames 
Next 
UploadForms.Add FormName , FormNames 
Else 
UploadForms.Add FormName , UploadObj.Form(FormName) 
End If 
End If 
Next 
If Not IsEmpty(SessionName) Then Session(SessionName) = Empty 
End Sub 
''----------------------------------------------------------------------------------- 
''DvFile.Upload V1.0组件上传 
''----------------------------------------------------------------------------------- 
Private Sub SaveFile_3() 
Dim FormName,Item,File 
Dim FileExt,FileName,FileType,FileToBinary 
UploadObj.InceptFileType = InceptFile 
UploadObj.MaxSize = FileMaxSize 
UploadObj.Install 
FileToBinary = Null 
If Not IsEmpty(SessionName) Then 
If Session(SessionName) <> UploadObj.Form(SessionName) or Session(SessionName) = Empty Then 
ErrCodes = 7 
Exit Sub 
End If 
End If 
If UploadObj.Err > 0 then 
Select Case UploadObj.Err 
Case 1 : ErrCodes = 3 
Case 2 : ErrCodes = 4 
Case 3 : ErrCodes = 5 
Case 4 : ErrCodes = 5 
Case 5 : ErrCodes = -1 
End Select 
Exit Sub 
Else 
For Each FormName In UploadObj.File ''列出所有上传了的文件 
If Count>MaxFile Then 
ErrCodes = 6 
Exit Sub 
End If 
Set File = UploadObj.File(FormName) 
FileExt = FixName(File.FileExt) 
If CheckFileExt(FileExt) = False then 
ErrCodes = 5 
EXIT SUB 
End If 
FileName = FormatName(FileExt) 
FileType = CheckFiletype(FileExt) 
If IsBinary Then 
FileToBinary = File.FileData 
End If 
If File.FileSize>0 Then 
File.SaveToFile Server.mappath(FilePath & FileName) 
AddData FormName , _ 
FileName , _ 
FilePath , _ 
File.FileSize , _ 
File.FileType , _ 
FileType , _ 
FileToBinary , _ 
FileExt , _ 
File.FileWidth , _ 
File.FileHeight 
Count = Count + 1 
CountSize = CountSize + File.FileSize 
End If 
Set File=Nothing 
Next 
For Each Item in UploadObj.Form 
UploadForms.Add Item.Name , Item.Value 
Next 
If Not IsEmpty(SessionName) Then Session(SessionName) = Empty 
End If 
End Sub 

Private Sub AddData( Form_Name,File_Name,File_Path,File_Size,File_ContentType,File_Type,File_Data,File_Ext,File_Width,File_Height ) 
Set FileInfo = New FileInfo_Cls 
FileInfo.FormName = Form_Name 
FileInfo.FileName = File_Name 
FileInfo.FilePath = File_Path 
FileInfo.FileSize = File_Size 
FileInfo.FileType = File_Type 
FileInfo.FileContentType = File_ContentType 
FileInfo.FileExt = File_Ext 
FileInfo.FileData = File_Data 
FileInfo.FileHeight = File_Height 
FileInfo.FileWidth = File_Width 
UploadFiles.Add Form_Name , FileInfo 
Set FileInfo = Nothing 
End Sub 

'创建预览图片:Call CreateView(原始文件的路径,预览文件名及路径,原文件后缀) 
Public Sub CreateView(Imagename,TempFilename,FileExt) 
If ErrCodes <>0 Then Exit Sub 
Select Case Preview_Type 
Case 0 
Image_Obj_0 Imagename,TempFilename,FileExt 
Case 1 
Image_Obj_1 Imagename,TempFilename,FileExt 
Case 2 
Image_Obj_2 Imagename,TempFilename,FileExt 
Case Else 
Preview_Type = 999 
End Select 
End Sub 

Sub Image_Obj_0(Imagename,TempFilename,FileExt) 
ImageObj.SetSavePreviewImagePath = Server.MapPath(TempFilename) '预览图存放路径 
ImageObj.SetPreviewImageSize = SetPreviewImageSize '预览图宽度 
ImageObj.SetImageFile = Trim(Server.MapPath(Imagename)) 'Imagename原始文件的物理路径 
'创建预览图的文件 
If ImageObj.DoImageProcess = False Then 
ErrCodes = -1 
Response.Write "生成预览图错误: " & ImageObj.GetErrString 
End If 
End Sub 

'---------------------AspJpegV1.2--------------- 
Sub Image_Obj_1(Imagename,TempFilename,FileExt) 
' 读取要处理的原文件 
Dim Draw_X,Draw_Y,Logobox 
Draw_X = 0 
Draw_Y = 0 
FileExt = Lcase(FileExt) 
ImageObj.Open Trim(Server.MapPath(Imagename)) 
If ImageObj.OriginalWidth<View_ImageWidth or ImageObj.Originalheight<View_ImageHeight Then 
TempFilename = "" 
Exit Sub 
Else 
If FileExt<>"gif" and ImageObj.OriginalWidth > Draw_ImageWidth * 2 and Draw_Type >0 Then 
Draw_X = DrawImage_X(ImageObj.OriginalWidth,Draw_ImageWidth,2) 
Draw_Y = DrawImage_y(ImageObj.Originalheight,Draw_ImageHeight,2) 
If Draw_Type=2 Then 
Set Logobox = Server.CreateObject("Persits.Jpeg") 
'*添加水印图片 添加时请关闭水印字体* 
'//读取添加的图片 
Logobox.Open Server.MapPath(Draw_Info) 
Logobox.Width = Draw_ImageWidth '// 加入图片的原宽度 
Logobox.Height = Draw_ImageHeight '// 加入图片的原高度 
ImageObj.DrawImage Draw_X, Draw_Y, Logobox, Draw_Graph,Transition_Color,90 '// 加入图片的位置价坐标(添加水印图片) 
'ImageObj.Sharpen 1, 130 
ImageObj.Save Server.MapPath(Imagename) 
Set Logobox=Nothing 
Else 
'//关于修改字体及文字颜色的 
ImageObj.Canvas.Font.Color = Draw_FontColor '// 文字的颜色 
ImageObj.Canvas.Font.Family = Draw_FontFamily '// 文字的字体 
ImageObj.Canvas.Font.Bold = Draw_FontBold 
ImageObj.Canvas.Font.Size = Draw_FontSize '//字体大小 
' Draw frame: black, 2-pixel width 
ImageObj.Canvas.Print Draw_X, Draw_Y, Draw_Info '// 加入文字的位置坐标 
ImageObj.Canvas.Pen.Color = &H000000 '// 边框的颜色 
ImageObj.Canvas.Pen.Width = 1 '// 边框的粗细 
ImageObj.Canvas.Brush.Solid = False '// 图片边框内是否填充颜色 
'ImageObj.Canvas.Bar 0, 0, ImageObj.Width, ImageObj.Height '// 图片边框线的位置坐标 
ImageObj.Save Server.MapPath(Imagename) 
End If 
End If 
If ImageObj.Width > ImageObj.height Then 
ImageObj.Width = View_ImageWidth 
ImageObj.Height = ViewImage_Height(ImageObj.OriginalWidth,ImageObj.Originalheight,View_ImageWidth,View_ImageHeight) 
Else 
ImageObj.Width = ViewImage_Width(ImageObj.OriginalWidth,ImageObj.Originalheight,View_ImageWidth,View_ImageHeight) 
ImageObj.Height = View_ImageHeight 
End If 
ImageObj.Sharpen 1, 120 
ImageObj.Save Server.MapPath(TempFilename) '// 生成预览文件 
End If 
End Sub 

'SoftArtisans ImgWriter V1.21 
Public Sub Image_Obj_2(Imagename,TempFilename,FileExt) 
'定义变量 
Dim Draw_X,Draw_Y 
FileExt = Lcase(FileExt) 
Draw_X = 0 
Draw_Y = 0 
' 读取要处理的原文件 
ImageObj.LoadImage Trim(Server.MapPath(Imagename)) 
If ImageObj.ErrorDescription <> "" Then 
TempFilename = "" 
ErrCodes = -1 
Response.Write "生成预览图错误: " &ImageObj.ErrorDescription 
Exit Sub 
End If 
If ImageObj.Width<Cint(View_ImageWidth) or ImageObj.Height<Cint(View_ImageHeight) Then 
TempFilename="" 
Exit Sub 
Else 
IF FileExt<>"gif" and ImageObj.Width > Draw_ImageWidth * 2 and Draw_Type>0 Then 
Draw_X = DrawImage_X(ImageObj.Width,Draw_ImageWidth,2) 
Draw_Y = DrawImage_y(ImageObj.Height,Draw_ImageHeight,2) 
Dim saiTopMiddle 
Select Case Draw_XYType 
Case "0" '左上 
saiTopMiddle = 3 
Case "1" '左下 
saiTopMiddle = 5 
Case "2" '居中 
saiTopMiddle = 1 
Case "3" '右上 
saiTopMiddle = 6 
Case "4" '右下 
saiTopMiddle = 8 
Case Else '不显示 
saiTopMiddle = 0 
End Select 
If Draw_Type=2 Then 
ImageObj.AddWatermark Server.MapPath(Draw_Info), saiTopMiddle, Draw_Graph,Transition_Color,True 
'ImageObj.AddWatermark Server.MapPath(Request.QueryString("mimg")), 0, 0.3 
Else 
ImageObj.Font.Italic = False '斜体 
ImageObj.Font.height = Draw_FontSize 
ImageObj.Font.name = Draw_FontFamily 
ImageObj.Font.Color = Draw_FontColor 
ImageObj.Text = Draw_Info 
ImageObj.DrawTextOnImage Draw_X, Draw_Y, ImageObj.TextWidth, ImageObj.TextHeight
End If 
ImageObj.SaveImage 0, ImageObj.ImageFormat, Server.MapPath(Imagename) 
End If 
'ImageObj.SharpenImage 100 
ImageObj.ColorResolution = 24 '24色保存 
ImageObj.ResizeImage View_ImageWidth,View_ImageHeight,0,0 
'0=saiFile,1=saiMemory,2=saiBrowser,4=saiDatabaseBlob 
'saiBMP=1,saiGIF=2,saiJPG=3,saiPNG=4,saiPCX=5,saiTIFF=6,saiWMF=7,saiEMF=8,saiPSD=9 
ImageObj.SaveImage 0, 3, Server.MapPath(TempFilename) 
End If 
End Sub 

'比例或固定缩小 
Private Function ViewImage_Width(Image_W,Image_H,xView_W,xView_H) 
If Draw_SizeType = "1" Then 
ViewImage_Width = Image_W * xView_H / Image_H 
Else 
ViewImage_Width = xView_W 
End If 
End Function 

Private Function ViewImage_Height(Image_W,Image_H,xView_W,xView_H) 
If Draw_SizeType = "1" Then 
ViewImage_Height = xView_W * Image_H / Image_W 
Else 
ViewImage_Height = xView_H 
End If 
End Function 

'SpaceVal X轴坐标边缘距离 
Private Function DrawImage_X(xImage_W,xLogo_W,SpaceVal) 
Select Case Draw_XYType 
Case "0" '左上 
DrawImage_X = SpaceVal 
Case "1" '左下 
DrawImage_X = SpaceVal 
Case "2" '居中 
DrawImage_X = (xImage_W + xLogo_W) / 2 
Case "3" '右上 
DrawImage_X = xImage_W - xLogo_W - SpaceVal 
Case "4" '右下 
DrawImage_X = xImage_W - xLogo_W - SpaceVal 
Case Else '不显示 
DrawImage_X = 0 
End Select 
End Function 

'SpaceVal Y轴坐标边缘距离 
Private Function DrawImage_Y(yImage_H,yLogo_H,SpaceVal) 
Select Case Draw_XYType 
Case "0" '左上 
DrawImage_Y = SpaceVal 
Case "1" '左下 
DrawImage_Y = yImage_H - yLogo_H - SpaceVal 
Case "2" '居中 
DrawImage_Y = (yImage_H + yLogo_H) / 2 
Case "3" '右上 
DrawImage_Y = SpaceVal 
Case "4" '右下 
DrawImage_Y = yImage_H - yLogo_H - SpaceVal 
Case Else '不显示 
DrawImage_Y = 0 
End Select 
End Function 

End Class 

Class FileInfo_Cls 
Public FormName,FileName,FilePath,FileSize,FileContentType,FileType,FileData,FileExt,FileWidth,FileHeight 
Private Sub Class_Initialize 
FileWidth = -1 
FileHeight = -1 
End Sub 
End Class 
%> 
分享知识是一种快乐也是一种进步========转载请注明出处===========
原文地址:https://www.cnblogs.com/haoyuanyuan/p/2950667.html