Tengo mi imagen de Request.Files [0]. Ahora, ¿cómo cargo esta imagen en S3? Veo que en la API .NET de AWS debe especificar ContentBody al poner un objeto que es una cadena. ¿Cómo obtendré el contenido del cuerpo de mi archivo?ASP.NET MVC - Carga de una imagen en Amazon S3
Respuesta
var file = Request.Files[0];
PutObjectRequest request = new PutObjectRequest();
request.BucketName = "mybucket"
request.ContentType = contentType;
request.Key = key;
request.InputStream = file.InputStream;
s3Client.PutObject(request);
Es muy probable que esta sea una cadena codificada en Base64, pero debe verificar la documentación de S3 para asegurarse. Si es así, debe usar Convert.ToBase64String() y pasarlo a la matriz de bytes.
Aquí hay un código de muestra que puedes probar. Yo no lo he probado, pero debería ayudarle a obtener la idea correcta:
if (Request.Files.Count >= 1) {
var file = Request.Files[0];
var fileContents = new byte[file.ContentLength];
file.InputStream.Read(fileContents, 0, file.ContentLength);
var fileBase64String = Convert.ToBase64String(fileContents);
// now you can send fileBase64String to the S3 uploader
}
eso no funcionó, pero lo que hizo el trabajo estaba usando file.InputStream como la propiedad de un InputStream Objeto PutObjectRequest. ¡Gracias por tu ayuda! –
poco más de detalle con el uso de carpetas y conceder a todos los usuarios acceso de sólo lectura. HTML:
C#
HttpPostedFileBase file = Request.Files[0];
if (file.ContentLength > 0) // accept the file
{
string accessKey = "XXXXXXXXXXX";
string secretKey = "122334XXXXXXXXXX";
AmazonS3 client;
using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey))
{
MemoryStream ms = new MemoryStream();
PutObjectRequest request = new PutObjectRequest();
request.WithBucketName("mybucket")
.WithCannedACL(S3CannedACL.PublicRead)
.WithKey("testfolder/test.jpg").InputStream = file.InputStream;
S3Response response = client.PutObject(request);
}
más detalle está disponible aquí: http://bradoyler.com/post/3614362044/uploading-an-image-with-aws-sdk-for-net-c
La publicación del blog es un enlace no válido. – swbradshaw
PurObjectRequest request = new PutObjectRequest()
{
BucketName = _bucketName,
CannedACL = S3CannedACL.PublicRead,
Key = string.Format("folderyouwanttoplacethefile/{0}", file.FileName),
InputStream = file.InputStream
};
YourS3client.PutObject(request);
Agregue algunas explicaciones sobre cómo funciona esto. –
- 1. ASP.NET MVC URL de imagen generadas dinámicamente
- 2. Subir archivos directamente a Amazon S3 desde la aplicación ASP.NET
- 3. Permisos de Amazon S3
- 4. Carga en Amazon S3 sin acceso y clave secreta
- 5. de carga de imágenes en ASP.NET MVC
- 6. zcat en amazon s3
- 7. Concurrencia en Amazon S3
- 8. Proceso de carga de video y Amazon S3
- 9. Crear una carpeta mediante s3cmd (Amazon S3)
- 10. Arquitectura de Amazon S3
- 11. Mover 1 millón de archivos de imagen a Amazon S3
- 12. Amazon S3 y Checksum
- 13. Sin conexión Amazon S3
- 14. Iniciar sesión en Amazon S3
- 15. SignatureDoesNotMatch - Amazon S3 API
- 16. Archivo duplicado en Amazon S3
- 17. Encabezados personalizados en Amazon S3
- 18. Amazon S3 CORS PUT falla
- 19. Amazon S3 Acceda a la imagen por url
- 20. Cliente basado en web para Amazon S3
- 21. ASP.Net MVC Indicador de carga en progreso
- 22. git y Amazon s3
- 23. Carga de archivo grande en asp.net MVC
- 24. Amazon S3 - x-amz-meta
- 25. Progreso de carga incorrecto al cargar archivos en Amazon S3 con SDK y Uploadify
- 26. Política de Amazon S3 Firma en Java
- 27. Amazon S3 boto: ¿cómo crear una carpeta?
- 28. Biblioteca .NET o aplicación asp.net para Amazon S3
- 29. ASP.NET MVC imagen lenta de carga a través de MVC framework?
- 30. Carriles 3 - Amazon S3 Paperclip UE Problema
Gracias por el código, también me aclara las cosas. – Chaddeus