que online los hacen ejemplos data convertir convert binarios base64binary archivos archivo application file asp-classic binary base64

file - online - Conversión de archivo binario a cadena Base64



que hacen los archivos binarios (6)

Necesito convertir archivos binarios cargados al formato de cadena base64 sobre la marcha. Estoy usando ASP, Vbscript. Usando el componente de Midori para la conversión de base64. Para archivos de tamaño pequeño (<20 K), el rendimiento está bien. Pero cuando supera los 75 o 100 K, está totalmente perdido. ¿Hay alguna forma eficiente de convertir archivos binarios grandes (2MB) a formato de cadena base64?

Gracias de antemano, Kenney


debe usar los métodos .NET Convert.ToBase64String y Convert.FromBase64String.

Use el método Convert.FromBase64String (). Esto le devolverá los datos binarios (como una matriz de bytes).

Para convertir datos binarios en una cadena Base64, vea funciones de conversión de datos binarios a una cadena en vbscript

de 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


Use MSXML para hacer la codificación por usted. Aquí hay una función que encapsula el procedimiento:

Function ToBase64(rabyt) Dim xml: Set xml = CreateObject("MSXML2.DOMDocument.3.0") xml.LoadXml "<root />" xml.documentElement.dataType = "bin.base64" xml.documentElement.nodeTypedValue = rabyt ToBase64 = xml.documentElement.Text End Function

Tenga en cuenta que esto incluirá saltos de línea en la codificación base64, pero la mayoría de los decodificadores base64 son tolerantes a los saltos de línea. De lo contrario, podría usar Replace(base64, vbLF, "") para eliminarlos, esto aún será más rápido que una solución VBScript pura.

Editar uso de ejemplo: -

Dim sBase64: sBase64 = ToBase64(Request.BinaryRead(Request.TotalBytes))


Uso el siguiente código para c #:

public static string ImageToBase64(Image image, ImageFormat format) { using (MemoryStream ms = new MemoryStream()) { // Convert Image to byte[] image.Save(ms, format); byte[] imageBytes = ms.ToArray(); // Convert byte[] to Base64 String string base64String = Convert.ToBase64String(imageBytes); return base64String; } } public static Image Base64ToImage(string base64String) { // Convert Base64 String to byte[] byte[] imageBytes = Convert.FromBase64String(base64String); MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); // Convert byte[] to Image ms.Write(imageBytes, 0, imageBytes.Length); Image image = Image.FromStream(ms, true); return image; }

para vbscript ver http://www.freevbcode.com/ShowCode.asp?ID=5248 tal vez te ayude.


He resuelto este problema implementando un componente .net para convertir a cadena base64. La parte difícil es que los datos binarios enviados a .NET COM desde ASP se reciben como una cadena. Convert.ToBase64 () acepta solo byte []. Así que intenté convertir cadena a byte [].

Pero la codificación disponible en .net (Unicode, ASCII, UTF) no funciona bien. Hay pérdida de datos, mientras se usan estas codificaciones. Finalmente lo hago usando el objeto StringReader. Lea char por char (16 bit) y conviértalos en (8 bit) byte [] array.

Y el rendimiento es el mejor.

Saludos, Siva.


Esto es lo que funcionó para mí

Function Base64DataURI(url) ''Create an Http object, use any of the four objects Dim Http Set Http = CreateObject("WinHttp.WinHttpRequest.5.1") ''Send request To URL Http.Open "GET", url, False Http.Send ''Get response data As a string and encode as base64 Base64DataURI = Encrypt(Http.ResponseText) End Function

En mi caso, la URL es una secuencia de comandos que genera un código de barras sobre la marcha y necesita codificar para incluir eso en los correos electrónicos.

Encrypt es una función bastante estándar que utilizamos para codificar como Base64, pero el concepto principal que necesitábamos era obtener el archivo a través de la URL, no del sistema de archivos.


Hay una buena discusión de esto en base64-encode-string-in-vbscript .

Además, he encontrado que este sitio es útil para intentar acelerar el código vb. Hay varias variantes de base 64 allí para vb6 que son bastante rápidas.