2011-12-21 15 views
5

Estoy utilizando AWS.Net para cargar contenido de usuario (imágenes) y mostrarlas en mi sitio. Esto es lo que mi código es el momento para la carga:Uso de almacenamiento S3 con .NET

using (client = Amazon.AWSClientFactory.CreateAmazonS3Client()) 
    { 
     var putObjectRequest = new PutObjectRequest 
     { 

      BucketName = bucketName, 
      InputStream = fileStream, 
      Key = fileName, 
      CannedACL = S3CannedACL.PublicRead, 
      //MD5Digest = md5Base64, 
      //GenerateMD5Digest = true, 
      Timeout = 3600000 //1 Hour 
     }; 

     S3Response response = client.PutObject(putObjectRequest); 
     response.Dispose(); 
} 

Cuál es la mejor manera de almacenar la ruta de acceso a estos archivos? ¿Hay alguna forma de obtener un enlace a mi archivo de la respuesta?

Actualmente solo tengo una URL en mi webconfig como https://s3.amazonaws.com/<MyBucketName>/ y luego, cuando necesito mostrar una imagen, tomo esa cadena y uso la clave del objeto que almaceno en la base de datos que representa el archivo cargado. ¿Hay una mejor manera de hacer esto?

Todos los ejemplos que vienen con esto realmente no abordan este tipo de uso. Y la documentación no está en línea y no sé cómo acceder a ella después de instalar el SDK, a pesar de seguir las instrucciones en Amazon.

+0

¡Solo a +1 para la muestra del código! S3/SDK aparecen de forma predeterminada en archivos privados al cargarse, independientemente del valor predeterminado del depósito. Todos los otros ejemplos que encontré establecen explícitamente los permisos utilizados en la utilidad de transferencia. ¡Una secuencia de entrada es justo lo que buscaba! – winwaed

Respuesta

2

Su enfoque de almacenar rutas, incluidos los nombres de sus depósitos en web.config, es lo mismo que yo, que funciona muy bien. Luego solo almaceno las rutas relativas en varias tablas de base de datos.

Lo bueno de este enfoque es que facilita la migración a diferentes mecanismos de almacenamiento o CDN como CloudFront. No creo que haya una mejor manera que este enfoque porque los archivos S3 residen en un dominio diferente, o un subdominio si se hace una asignación CNAME, y por lo tanto su tiempo de ejecución .NET no se ejecuta bajo el mismo dominio o subdominio.

0

También hay una propiedad de "Ubicación" en la respuesta que apunta directamente a la uri donde está el S3Object.

Cuestiones relacionadas