es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo cambiar la URL base en la etiqueta de imagen?

Tengo muchas imágenes en el sitio. Todas las imágenes permanecen en el sitio y se utilizan como archivos estáticos. Pero necesito cambiar la base URL a CDN. Tengo un middleware que verifica si existen las imágenes. Luego lee la imagen y la escribe en el contexto.

// HttpContext context;
byte[] fileContent = File.ReadAllBytes(staticFilePath);
context.Response.ContentType = MimeKit.MimeTypes.GetMimeType(staticFilePath);
await context.Response.Body.WriteAsync(fileContent, 0, fileContent.Length);

Intenté descargar las imágenes desde el CDN, pero no creo que sea una buena idea:

using (var webClient = new WebClient())
{
byte[] fileContent = webClient.DownloadData(staticFilePath);
context.Response.ContentType = MimeKit.MimeTypes.GetMimeType(staticFilePath);
await context.Response.Body.WriteAsync(fileContent, 0, fileContent.Length);
}

Cualquier ayuda sería muy apreciada.

¿Quizás pueda escribir la URL en context.Response.Body?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en asp.net-core-middleware y CDN, recomendaría utilizar un proveedor de CDN que permita modificar la URL base de las imágenes. De esta manera, todas las imágenes se servirán desde el CDN y la URL base se podrá cambiar fácilmente cuando sea necesario, sin modificar el código.

    Si es necesario utilizar el middleware para servir las imágenes, se puede modificar el código para escribir la URL del CDN en lugar de la ruta del archivo local en el cuerpo de respuesta del contexto. Esto se puede lograr reemplazando la línea:

    context.Response.ContentType = MimeKit.MimeTypes.GetMimeType(staticFilePath);

    con:

    context.Response.ContentType = MimeKit.MimeTypes.GetMimeType(staticFilePath);
    context.Response.Body.Write(Encoding.UTF8.GetBytes("https://cdn.example.com/"), 0, Encoding.UTF8.GetBytes("https://cdn.example.com/").Length);
    context.Response.Body.WriteAsync(fileContent, 0, fileContent.Length);

    Esto escribirá la URL del CDN seguida del contenido del archivo de imagen en el cuerpo de respuesta.

    Sin embargo, todavía se recomienda utilizar un proveedor de CDN, ya que ofrece una mejor escalabilidad, rendimiento y seguridad para servir archivos estáticos.

Comments are closed.