2014-09-12 3 views

Antwort

35

auch hier sind die Anweisung, die Sie folgen müssen, um ein voll funktionsfähiges Demo-Programm zu erhalten ...

1-Laden und das SDK Amazon Web Service für .NET installieren, die Sie in finden (http://aws.amazon.com/sdk-for-net/). weil ich visual studio 2010 habe, entscheide ich mich, das 3.5 .NET SDK zu installieren.

2- Öffnen Sie Visual Studio und ein neues Projekt, ich habe Visual Studio 2010 und ich verwende ein Konsolenanwendungsprojekt.

3- Verweis auf AWSSDK.dll hinzufügen, wird es mit dem Amazon Web Service SDK oben installiert, in meinem System befindet sich die DLL in "C: \ Programme (x86) \ AWS SDK für .NET \ bin \ Net35 \ AWSSDK.dll ".

4- eine neue Klassendatei machen, nennen es „AmazonUploader“ hier der vollständige Code der Klasse:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Amazon; 
using Amazon.S3; 
using Amazon.S3.Transfer; 

namespace UploadToS3Demo 
{ 
    public class AmazonUploader 
    { 
     public bool sendMyFileToS3(string localFilePath, string bucketName, string subDirectoryInBucket, string fileNameInS3) 
     { 
     // input explained : 
     // localFilePath = the full local file path e.g. "c:\mydir\mysubdir\myfilename.zip" 
     // bucketName : the name of the bucket in S3 ,the bucket should be alreadt created 
     // subDirectoryInBucket : if this string is not empty the file will be uploaded to 
      // a subdirectory with this name 
     // fileNameInS3 = the file name in the S3 

     // create an instance of IAmazonS3 class ,in my case i choose RegionEndpoint.EUWest1 
     // you can change that to APNortheast1 , APSoutheast1 , APSoutheast2 , CNNorth1 
     // SAEast1 , USEast1 , USGovCloudWest1 , USWest1 , USWest2 . this choice will not 
     // store your file in a different cloud storage but (i think) it differ in performance 
     // depending on your location 
     IAmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(RegionEndpoint.EUWest1); 

     // create a TransferUtility instance passing it the IAmazonS3 created in the first step 
     TransferUtility utility = new TransferUtility(client); 
     // making a TransferUtilityUploadRequest instance 
     TransferUtilityUploadRequest request = new TransferUtilityUploadRequest(); 

     if (subDirectoryInBucket == "" || subDirectoryInBucket == null) 
     { 
      request.BucketName = bucketName; //no subdirectory just bucket name 
     } 
     else 
     { // subdirectory and bucket name 
      request.BucketName = bucketName + @"/" + subDirectoryInBucket; 
     } 
     request.Key = fileNameInS3 ; //file name up in S3 
     request.FilePath = localFilePath; //local file name 
     utility.Upload(request); //commensing the transfer 

     return true; //indicate that the file was sent 
    } 
    } 
} 

5- eine Konfigurationsdatei hinzufügen: direkt auf Ihrem Projekt klicken Sie im Projektmappen-Explorer, und wählen Sie "add" -> "new item", dann aus der Liste den Typ "Application configuration file" auswählen und auf "add" klicken. Eine Datei namens "App.config" wird zur Lösung hinzugefügt.

6- Bearbeiten Sie die Datei app.config: Doppelklicken Sie im Lösungsexplorer auf die Datei "app.config". Das Bearbeitungsmenü wird angezeigt. Ersetzen Sie den gesamten Text mit dem folgenden Text:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="AWSProfileName" value="profile1"/> 
    <add key="AWSAccessKey" value="your Access Key goes here"/> 
    <add key="AWSSecretKey" value="your Secret Key goes here"/> 

    </appSettings> 
</configuration> 

Sie den obigen Text zu ändern, haben Sie Ihre Amazon Access Key ID und Geheimschlüssel zu reflektieren.

7- jetzt in der Datei Program.cs (nicht vergessen, dies ist eine Konsolenanwendung) schreiben Sie den folgenden Code:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
namespace UploadToS3Demo 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // preparing our file and directory names 
      string fileToBackup = @"d:\mybackupFile.zip" ; // test file 
      string myBucketName = "mys3bucketname"; //your s3 bucket name goes here 
      string s3DirectoryName = "justdemodirectory"; 
      string s3FileName = @"mybackupFile uploaded in 12-9-2014.zip"; 

      AmazonUploader myUploader = new AmazonUploader(); 
      myUploader.sendMyFileToS3(fileToBackup, myBucketName, s3DirectoryName, s3FileName); 
     } 
    } 
} 

8- die Saiten in dem Code ersetzen oben mit Ihren eigenen Daten

9-add Fehlerkorrektur und Ihr Programm ist bereit

+1

Dank für Antwort, aber gibt true zurück, um Erfolg anzuzeigen Betrieb ist schrecklich und unnötig in diesem Beispiel. –

+0

, also schlagen Sie vor, Ausnahme auszulösen, wenn irgendein Fehler, richtig? – docesam

+4

Die Schritte 1 und 3 können ersetzt werden, indem Sie AWSSDK mit NuGet erhalten. –

23

Die Lösung von @Docesam ist für eine alte Version von AWSSDK. Hier ist ein Beispiel mit der aktuellen Dokumentation von AmazonS3:

1) Öffnen Sie zuerst Visual Studio (Ich verwende VS2015) und erstellen Sie ein neues Projekt -> ASP.NET Web Application -> MVC.

2) Durchsuchen Sie in Nuget Paket verwalten, das Paket AWSSDK.S3 und installieren Sie es.

3) Jetzt eine Klasse erstellen AmazonS3Uploader genannt, dann diesen Code kopieren und einfügen:

using System; 
using Amazon.S3; 
using Amazon.S3.Model; 

namespace AmazonS3Demo 
{ 
    public class AmazonS3Uploader 
    { 
     private string bucketName = "your-amazon-s3-bucket"; 
     private string keyName = "the-name-of-your-file"; 
     private string filePath = "C:\\Users\\yourUserName\\Desktop\\myImageToUpload.jpg"; 

     public void UploadFile() 
     { 
      var client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1); 

      try 
      { 
       PutObjectRequest putRequest = new PutObjectRequest 
       { 
        BucketName = bucketName, 
        Key = keyName, 
        FilePath = filePath, 
        ContentType = "text/plain" 
       }; 

       PutObjectResponse response = client.PutObject(putRequest); 
      } 
      catch (AmazonS3Exception amazonS3Exception) 
      { 
       if (amazonS3Exception.ErrorCode != null && 
        (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") 
        || 
        amazonS3Exception.ErrorCode.Equals("InvalidSecurity"))) 
       { 
        throw new Exception("Check the provided AWS Credentials."); 
       } 
       else 
       { 
        throw new Exception("Error occurred: " + amazonS3Exception.Message); 
       } 
      } 
     } 
    } 
} 

4) Bearbeiten Sie Ihre Web.config-Datei Hinzufügen der nächsten Zeilen innerhalb von <appSettings></appSettings>:

<add key="AWSProfileName" value="any name for your profile"/> 
<add key="AWSAccessKey" value="your Access Key goes here"/> 
<add key="AWSSecretKey" value="your Secret Key goes here"/> 

5) Rufen Sie nun Ihre Methode UploadFile von HomeController.cs testen:

public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      AmazonS3Uploader amazonS3 = new AmazonS3Uploader(); 

      amazonS3.UploadFile(); 
      return View(); 
     } 
    .... 

6) Finden Sie Ihre Datei in Ihrem Amazon S3 Eimer und das ist alles.

Download my Demo Project

+0

mit Ihrer Lösung wie kann Bild komprimieren und dann nach dem Upload Bild auf dem Server FilePath = filePath hier eine Idee? – coderwill

+0

Ich habe versucht, Ihren Code und es funktioniert gut, aber ich muss vor dem Bildkomprimierung und dann nach dem Upload Bild hochladen, aber wie kann ich das nicht Idee so können Sie mir bitte helfen – coderwill

+0

Coderwill, versuchen Sie die API von https: // Tinypng .com /, vielleicht suchst du das. – mejiamanuel57