上传处理模块

<!--#include 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="http://www.hpsky.cn/blog/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
%>

This log 166
This entry was posted in 未分类|待整理. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*