рд╣рдо .Net рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЕрдореЗрдЬрд╝рди S3 рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЪреБрдиреМрддреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рд╕рд╛рдордирд╛ рдХрд┐рдП рдмрд┐рдирд╛, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди, рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рдкрд╣рд▓реЗ рд╣реА рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВред рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдореЗрдЬрд╝реЕрди рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реАрдзреЗ рдмрд╛рд▓реНрдЯреА рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рджреЛ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬреА рдФрд░ рдЧреБрдкреНрдд рдХреБрдВрдЬреА , рдЬрд┐рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреГрд╖реНрда рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдПрдХ рдирдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред NuGet Amazon SDK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝реЗрдВ
PM> Install-Package AWSSDK 

рд╣рдорд╛рд░реЗ рдлреЙрд░реНрдо рдореЗрдВ рджреЛ рд▓рд┐рд╕реНрдЯрдмреЙрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ: рдПрдХ рдЯреЛрдХрд░реА рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдЪрдпрдирд┐рдд рдЯреЛрдХрд░реА рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдо рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреЛрдХрд░реА рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪрдпрдирд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдмрдЯрди рдЬреЛрдбрд╝реЗрдВрдЧреЗ:


рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ
 string accessKey = "LASKDJFHGQPWOEIRUTY"; string secretKey = "laksdjfhgqpwoeirutyzmxncbv"; 

рдФрд░ рдмрд╛рд╕реНрдХреЗрдЯ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 private void btnGetBucket_Click(object sender, EventArgs e) { using (var client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey)) { var list = client.ListBuckets(); foreach (var bucket in list.Buckets) { lbBuckets.Items.Add(bucket.BucketName); } } } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ: рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕ рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЯреЛрдХрд░реА рдХреЗ рдирд╛рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд░реНрдорд╛рдг рдХреА рддрд╛рд░реАрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред
рдЪрдпрдирд┐рдд рд░реАрд╕рд╛рдпрдХрд▓ рдмрд┐рди рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб:
 private void btnGetList_Click(object sender, EventArgs e) { using (var client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey)) { if(lbBuckets.SelectedIndex < 0) return; var list = client.ListObjects( new ListObjectsRequest() { BucketName = lbBuckets.SelectedItem.ToString() }); foreach (var file in list.S3Objects) { lbFiles.Items.Add(file.Key); } } } 

рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк S3Objects рдХреА рддреИрдпрд╛рд░ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИред рдЖрдк рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдХрдЪреНрдЪреЗ XML рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 <?xml version="1.0" encoding="utf-16"?> <ListObjectsResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <RequestId>Id</RequestId> <AmazonId2>Id</AmazonId2> <Name>Name</Name> <Prefix /> <S3Objects> <Key>FileName</Key> <BucketName>BucketName</BucketName> <LastModified>, 20  2012 13:00:33 GMT</LastModified> <ETag>"tag"</ETag> <Size>0</Size> <Owner> <Id>OwnerId</Id> <DisplayName>OwnerName</DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> </S3Objects> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> </ListObjectsResponse> 

рдЦреИрд░, рдХреЛрдб рднреЗрдЬрдиреЗ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓:
 private void btnUpload_Click(object sender, EventArgs e) { var dlg = new OpenFileDialog(); if(dlg.ShowDialog() == DialogResult.OK) { var stream = new FileStream(dlg.FileName, FileMode.Open); using (var client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey)) { var request = new PutObjectRequest(); if (lbBuckets.SelectedIndex < 0) return; request .WithBucketName(lbBuckets.SelectedItem.ToString()) .WithCannedACL(S3CannedACL.PublicRead) .WithKey(Path.GetFileName(dlg.FileName)) .InputStream = stream; client.PutObject(request); } } } 

рдпрд╣рд╛рдВ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдЯреЛрдХрд░реА рдореЗрдВ рдЗрд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рдХреНрдпрд╛ рдЧреЛрдкрдиреАрдпрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЯреНрд░реИрд╢ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрд▓реИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдирд╛рдо рдХреЛ рдкрде рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЦреИрд░, рдирд┐рд╖реНрдХрд╛рд╕рди рдХреЛрдб:
 private void btnDelete_Click(object sender, EventArgs e) { using (var client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey)) { if (lbFiles.SelectedIndex < 0) return; new DeleteObjectRequest() .WithBucketName(lbBuckets.SelectedItem.ToString()) .WithKey(lbFiles.SelectedItem.ToString()); } } 


рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА:
.NET рдХреЗ рд▓рд┐рдП AWS SDK рд╕реЗ рдЖрд░рдВрдн рдХрд░рдирд╛
Gdownload рд╕реНрд░реЛрдд рдХреЛрдб

Source: https://habr.com/ru/post/In146223/


All Articles