Nuestros investigadores estrellas han agotado sus reservas de café, investigando noche y día por la respuesta, hasta que Alicia encontró la respuesta en Gitea y hoy la comparte con nosotros.
Solución:
A diferencia de guardar los datos como un string (que asigna más memoria de la necesaria y podría no funcionar si los datos binarios null bytes en él), recomendaría un enfoque más como
foreach (var file in files)
if (file.Length > 0)
using (var ms = new MemoryStream())
file.CopyTo(ms);
var fileBytes = ms.ToArray();
string s = Convert.ToBase64String(fileBytes);
// act on the Base64 data
Además, para beneficio de otros, el código fuente de IFormFile
se puede encontrar en GitHub
Puedes simplemente escribir una extensión simple:
public static class FormFileExtensions
public static async Task GetBytes(this IFormFile formFile)
using (var memoryStream = new MemoryStream())
await formFile.CopyToAsync(memoryStream);
return memoryStream.ToArray();
Uso
var bytes = await formFile.GetBytes();
var hexString = Convert.ToBase64String(bytes);
Puede usar el siguiente código para convertirlo en un byte array:
foreach (var file in files)
if (file.Length > 0)
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
using (var reader = new StreamReader(file.OpenReadStream()))
string contentAsString = reader.ReadToEnd();
byte[] bytes = new byte[contentAsString.Length * sizeof(char)];
System.Buffer.BlockCopy(contentAsString.ToCharArray(), 0, bytes, 0, bytes.Length);
Si estás de acuerdo, puedes dejar una sección acerca de qué te ha parecido este artículo.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)