Converting binary file to Base64 string

后端 未结 6 1554
小鲜肉
小鲜肉 2021-01-13 06:41

I need to convert uploaded binary files to base64 string format on the fly. I\'m using ASP, Vbscript. Using Midori\'s component for base64 conversion. For small size files (

6条回答
  •  臣服心动
    2021-01-13 07:30

    you should use the .NET methods Convert.ToBase64String and Convert.FromBase64String.

    Use the Convert.FromBase64String( ) method. This will give you the binary data back (as a byte array).

    To convert binary data to a Base64 string see conversion functions from binary data to a string in vbscript

    from http://www.motobit.com/tips/detpg_Base64Encode/

    Function Base64EncodeBinary(inData)
      Base64EncodeBinary = Base64Encode(BinaryToString(inData))
    End Function
    
    Function Base64Encode(inData)
      'rfc1521
      '2001 Antonin Foller, Motobit Software, http://Motobit.cz
      Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
      Dim cOut, sOut, I
    
      'For each group of 3 bytes
      For I = 1 To Len(inData) Step 3
        Dim nGroup, pOut, sGroup
    
        'Create one long from this 3 bytes.
        nGroup = &H10000 * Asc(Mid(inData, I, 1)) + _
          &H100 * MyASC(Mid(inData, I + 1, 1)) + MyASC(Mid(inData, I + 2, 1))
    
        'Oct splits the long To 8 groups with 3 bits
        nGroup = Oct(nGroup)
    
        'Add leading zeros
        nGroup = String(8 - Len(nGroup), "0") & nGroup
    
        'Convert To base64
        pOut = Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) + _
          Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) + _
          Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) + _
          Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)
    
        'Add the part To OutPut string
        sOut = sOut + pOut
    
        'Add a new line For Each 76 chars In dest (76*3/4 = 57)
        'If (I + 2) Mod 57 = 0 Then sOut = sOut + vbCrLf
      Next
      Select Case Len(inData) Mod 3
        Case 1: '8 bit final
          sOut = Left(sOut, Len(sOut) - 2) + "=="
        Case 2: '16 bit final
          sOut = Left(sOut, Len(sOut) - 1) + "="
      End Select
      Base64Encode = sOut
    End Function
    
    Function MyASC(OneChar)
      If OneChar = "" Then MyASC = 0 Else MyASC = Asc(OneChar)
    End Function
    

提交回复
热议问题