zoukankan      html  css  js  c++  java
  • 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 
    %> 
    分享知识是一种快乐也是一种进步========转载请注明出处===========
  • 相关阅读:
    Python中所有的关键字
    关于selenium的8种元素定位
    对提示框的操作
    selenium+webservice进行百度登录
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled...报错解决
    Vue中使用echarts
    npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142解决方法
    插入排序
    冒泡排序优化
    roject 'org.springframework.boot:spring-boot-starter-parent:XXX' not found 解决
  • 原文地址:https://www.cnblogs.com/haoyuanyuan/p/2950667.html
Copyright © 2011-2022 走看看