<p>CFile.asp,封装了在服务器端保存文件等操作。</p>
<% 
'**************************************************** 
'文件名: CFile.asp
'描  述:文件类
'	
'
'**************************************************** 

'# *Using CFormDataGetter.asp*

Class CFile
    ' 完整的路径名+文件名+后缀名
    Private sFullName
    Private sDescription
    Private sMIME
    Private bnsContent
    Private csClass
    
    Private Sub Class_Initialize()
        csClass = "CFile"
    End Sub
    
    Public Property Get FullName()
        FullName = sFullName
    End Property
    
    Public Property Let FullName(ByRef sNewFullName) 
        sFullName = sNewFullName
    End Property
    
    ' 获取文件的路径,不含文件名
    Public Property Get Path()
        Path = Left(sFullName, InStrRev(sFullName, "\"))
    End Property
    
    ' 去掉路径的文件名+后缀名
    Public Property Get Name()
        Name = Right(sFullName, Len(sFullName) - InStrRev(sFullName, "\"))
    End Property
    
    ' 去掉路径后的文件名 (不要后缀名)
    Public Property Get ShortName()
        Dim i
        
        i = InStrRev(Me.Name, ".")
        If i > 0 Then
            ShortName = Left(Me.Name, InStrRev(Me.Name, ".") - 1)
        Else
            ShortName = Me.Name
        End If
    End Property
    
    Public Property Let Description(ByRef sNewDesc)
        sDescription = sNewDesc
    End Property
    
    Public Property Get Description()
        Description = sDescription
    End Property
    
    Public Property Let MIME(ByRef sNewMIME)
        sMIME = sNewMIME
    End Property
    
    Public Property Get MIME()
        MIME = sMIME
    End Property
    
    Public Property Get Size()
        Size = LenB(Me.BinaryStream)
    End Property
    
    '
    ' 设置文件的二进制流
    '
    Public Property Let BinaryStream(ByRef bnsNewBinaryStream)
        bnsContent = bnsNewBinaryStream
    End Property
    
    '
    ' 获取文件的文本
    '
    Public Property Get TextStream(ByRef sCharset)
        Dim stm
        
        Set stm = Server.CreateObject("ADODB.Stream")
        stm.Type = 2
        stm.Open
        stm.WriteText bnsContent
        stm.Position = 0
        If Len(sCharset) > 0 Then stm.Charset = sCharset
        TextStream = stm.ReadText
        stm.Close
        Set stm = Nothing
    End Property 
    
    '
    ' 获取文件的二进制流
    '
    Public Property Get BinaryStream()
        BinaryStream = bnsContent
    End Property
    
    ' 后缀名
    Public Property Get Ext()
        Ext = Right(Me.Name, Len(Me.Name) - InStrRev(Me.Name, "."))
    End Property
    
    Private Sub CFile_Initialize()
        sFullName = ""
        sDescription = ""
        sMIME = ""
        bnsContent = ChrB(0)
    End Sub
    
    '
    ' 打开文件
    '
    Public Function Open(ByRef sFullName)
        Dim stm
        
        Me.FullName = sFullName
        Set stm = Server.CreateObject("ADODB.Stream")
        stm.Type = 2
        stm.Mode = 3
        stm.Open
        stm.LoadFromFile sFullName
        stm.Type = 1
        bnsContent = stm.Read
        stm.Close
        Set stm = Nothing
    End Function
    
    Public Function Save(ByRef sFullName, ByVal iWriteMode)
        Dim stm, bns
        Const sSOURCE = "Save(sFullName, iWriteMode)"
        
        'On Error Resume Next
        If Trim(sFullName) = "" Or Right(sFullName, 1) = "\" Then Exit Function
        Set stm = Server.CreateObject("ADODB.Stream")
        stm.Type = 1
        stm.Open
        stm.Write bnsContent
        stm.SaveToFile sFullName, iWriteMode
        stm.Close
        Set stm = Nothing
        If err.number <> 0 Then 
            Save = "时间戳:" & Now() & " [" & csClass & "." & sSOURCE & "] 发生错误(sFullName = '" & sFullName & ", iWriteMode = '" & iWriteMode & ")。错误号:" & Err.number & ";错误描述:" & Err.Description & ";错误源:" & Err.Source & ";"
        Else
            Save = "OK"
        End If
        On Error Goto 0
    End Function
End Class
%>