public string ObtenerUrlPublicaTemporal(string urlAmazon) { string url = null; AmazonObjectUrl amazonUrl = new AmazonObjectUrl(urlAmazon); if (amazonUrl.IsValid) { try { Amazon.RegionEndpoint region = Amazon.RegionEndpoint.GetBySystemName(Constants.RegionDefecto); Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(Constants.PerfilSoportesSDKStore); IAmazonS3 s3Client = new AmazonS3Client(credentials, region); GetPreSignedUrlRequest request = new GetPreSignedUrlRequest() { BucketName = amazonUrl.Bucket, Key = amazonUrl.Key, Expires = DateTime.Now.AddSeconds(Constants.SegundosVigenciaUrl) }; url = s3Client.GetPreSignedURL(request); } catch (Exception ex) { Activa.Trace.Trace.WriteLineLine_Error(ex); } } return(url); }
public vEntityRespuestaCargaNube CargarArchivo(string ruta, string checkSum, string bucket, string key) { vEntityRespuestaCargaNube resultado = null; AmazonObjectUrl urlAmazon = new AmazonObjectUrl() { Bucket = bucket, Key = key }; try { Amazon.Runtime.AWSCredentials credentials = new Amazon.Runtime.StoredProfileAWSCredentials(Constants.PerfilSoportesSDKStore); using (IAmazonS3 s3Client = new AmazonS3Client(credentials, Amazon.RegionEndpoint.GetBySystemName(Constants.RegionDefecto))) { string tagCheckSum = "x-amz-meta-checksum"; var fileInfo = new Amazon.S3.IO.S3FileInfo(s3Client, urlAmazon.Bucket, urlAmazon.Key); if (fileInfo.Exists) { var respGet = s3Client.GetObjectMetadata(urlAmazon.Bucket, urlAmazon.Key); if (respGet.Metadata[tagCheckSum] == checkSum) { resultado = new vEntityRespuestaCargaNube() { Exito = true, Link = urlAmazon.ToString() }; } else { resultado = new vEntityRespuestaCargaNube() { Exito = false, Link = urlAmazon.ToString(), Mensaje = "Hay un archivo con la misma ruta en el servidor, pero tienen checksum diferente" }; } } if (resultado == null) { using (var reader = new System.IO.StreamReader(ruta)) { var request = new PutObjectRequest() { BucketName = urlAmazon.Bucket, Key = urlAmazon.Key, CannedACL = S3CannedACL.Private, InputStream = reader.BaseStream }; request.Metadata.Add(tagCheckSum, checkSum); var respIns = s3Client.PutObject(request); var fileInfo2 = new Amazon.S3.IO.S3FileInfo(s3Client, urlAmazon.Bucket, urlAmazon.Key); if (fileInfo2.Exists) { resultado = new vEntityRespuestaCargaNube() { Exito = true, Link = urlAmazon.ToString() }; } else { resultado = new vEntityRespuestaCargaNube() { Exito = false, Link = urlAmazon.ToString(), Mensaje = "Se ejecuto el proceso de cargue del archivo, pero no se pudo confirmar su existencia en la nube." }; } } } } } catch (Exception ex) { resultado = new vEntityRespuestaCargaNube() { Exito = false, Link = urlAmazon.ToString(), Mensaje = String.Format("Error al cargar archivo a Amazon. Excepción: {0}", ex.ToString()) }; } return(resultado); }