public void UploadDirS3Tranfer(string AccessKey, string SerectKey, string bucketName, string endPoint, string DirectoryPath, EventHandler <UploadDirectoryProgressArgs> UploadProgressEvent = null)
 {
     try
     {
         using (var client = new AmazonS3Client(AccessKey, SerectKey, RegionEndpointS3.ParseRegion(endPoint)))
         {
             var uploadRequest = new TransferUtilityUploadDirectoryRequest
             {
                 Directory     = DirectoryPath,
                 BucketName    = bucketName,
                 SearchPattern = "*.zip",
                 SearchOption  = System.IO.SearchOption.AllDirectories,
                 KeyPrefix     = Guid.NewGuid().ToString(),
                 CannedACL     = S3CannedACL.PublicRead
             };
             uploadRequest.UploadDirectoryProgressEvent += UploadProgressEvent;
             using (var Utility = new TransferUtility(client))
             {
                 Utility.UploadDirectory(uploadRequest);
             }
         }
     }
     catch (AmazonS3Exception ex)
     {
         throw new AmazonS3Exception(string.Format("Message {0} Error Code {1} Status Code {2}", ex.Message, ex.ErrorCode, ex.StatusCode));
     }
 }
 public void UploadFileS3Tranfer(string AccessKey, string SerectKey, string bucketName, string keyName, string endPoint, string Path, EventHandler <UploadProgressArgs> UploadProgressEvent)
 {
     try
     {
         using (var client = new AmazonS3Client(AccessKey, SerectKey, RegionEndpointS3.ParseRegion(endPoint)))
         {
             var uploadRequest = new TransferUtilityUploadRequest
             {
                 BucketName = bucketName,
                 Key        = keyName,
                 PartSize   = 6291456, // 6 MB
                 CannedACL  = S3CannedACL.PublicRead,
                 FilePath   = Path
             };
             uploadRequest.UploadProgressEvent += UploadProgressEvent;
             using (var Utility = new TransferUtility(client))
             {
                 Utility.Upload(uploadRequest);
             }
         }
     }
     catch (AmazonS3Exception ex)
     {
         throw new AmazonS3Exception(string.Format("Message {0} Error Code {1} Status Code {2}", ex.Message, ex.ErrorCode, ex.StatusCode));
     }
 }
 /// <summary>
 /// Get list GetListS3BucketObject
 /// </summary>
 /// <param name="AccessKey"></param>
 /// <param name="SerectKey"></param>
 /// <param name="bucketName"></param>
 /// <param name="keyName"></param>
 /// <param name="endPoint"></param>
 /// <returns></returns>
 public List <ModelS3BucketObject> GetListS3BucketObject(string AccessKey, string SerectKey, string bucketName, string endPoint)
 {
     try
     {
         using (var client = new AmazonS3Client(AccessKey, SerectKey, RegionEndpointS3.ParseRegion(endPoint)))
         {
             var listRequest = new ListObjectsRequest
             {
                 BucketName = bucketName,
             };
             ListObjectsResponse listResponse;
             do
             {
                 listResponse = client.ListObjects(listRequest);
                 var list = listResponse.S3Objects.Select(x => new ModelS3BucketObject
                 {
                     Key          = x.Key,
                     Size         = x.Size,
                     BucketName   = x.BucketName,
                     ETag         = x.ETag.Replace(@"""", string.Empty),
                     LastModified = x.LastModified,
                 }).ToList();
                 return(list);
             }while (listResponse.IsTruncated);
         }
     }
     catch (AmazonS3Exception ex)
     {
         throw new AmazonS3Exception(string.Format("Message {0} Error Code {1} Status Code {2}", ex.Message, ex.ErrorCode, ex.StatusCode));
     }
 }
 /// <summary>
 /// Get List S3Bucket
 /// </summary>
 /// <param name="AccessKey"></param>
 /// <param name="SerectKey"></param>
 /// <param name="bucketName"></param>
 /// <param name="keyName"></param>
 /// <param name="endPoint"></param>
 /// <returns></returns>
 public List <ModelS3Bucket> GetListS3Bucket(string AccessKey, string SerectKey, string endPoint)
 {
     try
     {
         using (var client = new AmazonS3Client(AccessKey, SerectKey, RegionEndpointS3.ParseRegion(endPoint)))
         {
             var response = client.ListBuckets();
             var List     = response.Buckets.Select(x => new ModelS3Bucket
             {
                 BucketName   = x.BucketName,
                 CreationDate = x.CreationDate
             }).ToList();
             return(List);
         }
     }
     catch (AmazonS3Exception ex)
     {
         throw new AmazonS3Exception(string.Format("Message {0} Error Code {1} Status Code {2}", ex.Message, ex.ErrorCode, ex.StatusCode));
     }
 }
 /// <summary>
 /// Get Link Storage
 /// </summary>
 /// <param name="AccessKey"></param>
 /// <param name="SerectKey"></param>
 /// <param name="bucketName"></param>
 /// <param name="keyName"></param>
 /// <param name="endPoint"></param>
 /// <returns></returns>
 public string GetLinkS3(string AccessKey, string SerectKey, string bucketName, string keyName, string endPoint)
 {
     try
     {
         using (var client = new AmazonS3Client(AccessKey, SerectKey, RegionEndpointS3.ParseRegion(endPoint)))
         {
             GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
             {
                 BucketName = bucketName,
                 Key        = keyName,
                 Expires    = DateTime.Now.AddHours(1),
                 Protocol   = Protocol.HTTPS
             };
             return(client.GetPreSignedURL(request));
         }
     }
     catch (AmazonS3Exception ex)
     {
         throw new AmazonS3Exception(string.Format("Message {0} Error Code {1} Status Code {2}", ex.Message, ex.ErrorCode, ex.StatusCode));
     }
 }
 /// <summary>
 /// Get GetSingleObject
 /// </summary>
 /// <param name="AccessKey"></param>
 /// <param name="SerectKey"></param>
 /// <param name="bucketName"></param>
 /// <param name="keyName"></param>
 /// <param name="endPoint"></param>
 /// <returns></returns>
 public ModelS3BucketObject GetSingleObject(string AccessKey, string SerectKey, string bucketName, string keyName, string endPoint)
 {
     try
     {
         using (var client = new AmazonS3Client(AccessKey, SerectKey, RegionEndpointS3.ParseRegion(endPoint)))
         {
             var request = new GetPreSignedUrlRequest
             {
                 BucketName = bucketName,
                 Key        = keyName,
                 Expires    = DateTime.Now.AddHours(1),
                 Protocol   = Protocol.HTTPS
             };
             //return client.GetPreSignedURL(request);
             var listRequest = new ListObjectsRequest
             {
                 BucketName = bucketName,
             };
             ListObjectsResponse listResponse;
             do
             {
                 listResponse = client.ListObjects(listRequest);
                 var Result = listResponse.S3Objects.Select(x => new ModelS3BucketObject
                 {
                     Key          = x.Key,
                     Size         = x.Size,
                     BucketName   = x.BucketName,
                     ETag         = x.ETag.Replace(@"""", string.Empty),
                     Link         = client.GetPreSignedURL(request),
                     LastModified = x.LastModified
                 }).FirstOrDefault();
                 return(Result);
             }while (listResponse.IsTruncated);
         }
     }
     catch (AmazonS3Exception ex)
     {
         throw new AmazonS3Exception(string.Format("Message {0} Error Code {1} Status Code {2}", ex.Message, ex.ErrorCode, ex.StatusCode));
     }
 }
 public void DownloadFileS3Tranfer(string AccessKey, string SerectKey, string bucketName, string keyName, string endPoint, string DestPath, EventHandler <WriteObjectProgressArgs> WriteObjectProgressEvent)
 {
     try
     {
         using (var client = new AmazonS3Client(AccessKey, SerectKey, RegionEndpointS3.ParseRegion(endPoint)))
         {
             var downloadRequest = new TransferUtilityDownloadRequest
             {
                 Key        = keyName,
                 BucketName = bucketName,
                 FilePath   = DestPath,
             };
             downloadRequest.WriteObjectProgressEvent += WriteObjectProgressEvent;
             using (var Utility = new TransferUtility(client))
             {
                 Utility.Download(downloadRequest);
             }
         }
     }
     catch (AmazonS3Exception ex)
     {
         throw new AmazonS3Exception(string.Format("Message {0} Error Code {1} Status Code {2}", ex.Message, ex.ErrorCode, ex.StatusCode));
     }
 }