'
'文件Base64编码
'
' 参数:原始文件名、编码文件名
'
Public Function CSBase64Encode(ByVal paraInFilename As String, ByVal paraOutFilename As String) As String
If paraInFilename = "" Or paraOutFilename = "" Then
CSBase64Encode = "" '返回空值
Exit Function
End If
Dim objCrypt As New CAPICOM.Utilities '建立对象
Dim intFile As Integer, buffer() As Byte
intFile = FreeFile()
Open paraInFilename For Binary Access Read As intFile '打开输入文件
ReDim Preserve buffer(LOF(intFile)) As Byte '根据文件长度定义缓存大小
Get intFile, , buffer() '读文件至缓存
Close intFile '关闭输入文件
Dim strBase64Data As String
strBase64Data = objCrypt.Base64Encode(buffer()) '编码运算
intFile = FreeFile()
Open paraOutFilename For Binary Access Write As intFile '打开输出文件
Put intFile, , buffer() '将缓存写文件
Close intFile '关闭输出文件
End Function
'
'文件Base64解码
'
' 参数:编码文件名、原始文件名
'
Public Function CSBase64Decode(ByVal paraInFilename As String, ByVal paraOutFilename As String) As String
If paraInFilename = "" Or paraOutFilename = "" Then
CSBase64Decode = "" '返回空值
Exit Function
End If
Dim objCrypt As New CAPICOM.Utilities '建立对象
Dim intFile As Integer, buffer() As Byte
intFile = FreeFile()
Open paraInFilename For Binary Access Read As intFile '打开输入文件
ReDim Preserve buffer(LOF(intFile)) As Byte '根据文件长度定义缓存大小
Get intFile, , buffer() '读文件至缓存
Close intFile
Dim strBase64Data As String
strBase64Data = StrConv(buffer(), vbUnicode) '转换格式
buffer() = objCrypt.Base64Decode(strBase64Data) '解码运算
Set objCrypt = Nothing '释放对象
intFile = FreeFile()
Open paraOutFilename For Binary Access Write As intFile '打开输出文件
Put intFile, , buffer() '将缓存写文件
Close intFile
End Function
其中objCrypt 是微软的“capicom.dll”的CAPICOM.Utilities 对象