📤Subida de Archivos

📃 IFormFile: Interfaz para la Subida de Archivos

  • Definición: IFormFile es una interfaz en ASP.NET Core que representa un archivo enviado con el HttpRequest.

  • Uso Común: Se usa en los formularios para recibir archivos subidos por el usuario.

🧰 Uso Básico de IFormFile

  • Obtener Información del Archivo: Puedes acceder a propiedades como FileName, Length, y ContentType.

  • Leer Contenido del Archivo: Ofrece métodos como OpenReadStream() para obtener el contenido del archivo.

🚀 Ejemplo Conceptual de Uso de IFormFile

  • Recibe el archivo en una acción del controlador o Razor Page.

  • Usa ContentType para validar el tipo MIME del archivo.

  • Usa CopyToAsync() para copiar el contenido del archivo a un destino, como un FileStream.

public async Task<IActionResult> SubirArchivo(IFormFile archivo)
        {
            if (archivo != null && archivo.Length > 0)
            {
                // Validar el tipo MIME del archivo, por ejemplo, "image/jpeg"
                if (archivo.ContentType.ToLower() != "image/jpeg")
                {
                    return BadRequest("Tipo de archivo no permitido.");
                }

                // Definir la ruta donde se guardará el archivo
                var ruta = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "archivos", archivo.FileName);

                // Verificar si el directorio existe, si no, crearlo
                var directorio = Path.GetDirectoryName(ruta);
                if (!Directory.Exists(directorio))
                {
                    Directory.CreateDirectory(directorio);
                }

                // Copiar el archivo al destino
                using (var fileStream = new FileStream(ruta, FileMode.Create))
                {
                    await archivo.CopyToAsync(fileStream);
                }

                // Retornar una respuesta exitosa
                return Ok(new { mensaje = "Archivo subido con éxito." });
            }

            // Si no hay archivo o el tamaño es 0, retornar un error
            return BadRequest("No se recibió ningún archivo.");
        }
    }

Última actualización