Saltar al contenido

Cómo subir un archivo a amazon S3 muy fácil usando c #

Esta sección fue aprobado por nuestros especialistas así se garantiza la exactitud de nuestro tutorial.

Solución:

Bueno, aquí están las instrucciones que debe seguir para obtener un programa de demostración completamente funcional …

1-Descargue e instale el SDK de servicios web de Amazon para .NET que puede encontrar en (http://aws.amazon.com/sdk-for-net/). debido a que tengo Visual Studio 2010, elijo instalar el SDK de .NET 3.5.

2- abrir Visual Studio y hacer un nuevo proyecto, tengo Visual Studio 2010 y estoy usando un proyecto de aplicación de consola.

3- agregue referencia a AWSSDK.dll, se instala con el SDK del servicio web de Amazon mencionado anteriormente, en mi sistema el dll se encuentra en “C: Archivos de programa (x86) AWS SDK para .NET bin Net35 AWSSDK .dll “.

4- crea un nuevo archivo de clase, llámalo “AmazonUploader” aquí el código completo de la clase:

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:mydirmysubdirmyfilename.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 == "" 
  

5- agregue un archivo de configuración: haga clic derecho en su proyecto en el explorador de soluciones y elija “agregar” -> “nuevo elemento” luego de la lista elija el tipo “Archivo de configuración de la aplicación” y haga clic en el botón “agregar”. se agrega un archivo llamado “App.config” a la solución.

6- edite el archivo app.config: haga doble clic en el archivo “app.config” en el explorador de soluciones y aparecerá el menú de edición. reemplace todo el texto con el siguiente texto:



  
    
    
    

  

tiene que modificar el texto anterior para reflejar su ID de clave de acceso de Amazon y su clave de acceso secreta.

7- ahora en el archivo program.cs (recuerda que esta es una aplicación de consola) escribe el siguiente código:

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- reemplace las cadenas en el código anterior con sus propios datos

9- agrega corrección de errores y tu programa está listo

La solución de @docesam es para una versión antigua de AWSSDK. A continuación, se muestra un ejemplo con la documentación más reciente de AmazonS3:

1) Primero abra Visual Studio (estoy usando VS2015) y cree un nuevo proyecto -> Aplicación web ASP.NET -> MVC.

2) Examinar en Administrar paquete Nuget, el paquete AWSSDK.S3 e instalarlo.

3) Ahora crea una clase llamada AmazonS3Uploader, luego copia y pega este código:

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")
                    
        
    

4) Edite su archivo Web.config agregando las siguientes líneas dentro de :




5) Ahora llama a tu método UploadFile de HomeController.cs para probarlo:

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

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

6) Busque su archivo en su depósito de Amazon S3 y eso es todo.

Descargar mi proyecto de demostración

He escrito un tutorial sobre esto.

Subir un archivo al depósito de S3 mediante una API de bajo nivel:

IAmazonS3 client = new AmazonS3Client("AKI...access-key...", "+8Bo...secrey-key...", RegionEndpoint.APSoutheast2);  

FileInfo file = new FileInfo(@"c:test.txt");  
string destPath = "folder/sub-folder/test.txt"; // <-- low-level s3 path uses /
PutObjectRequest request = new PutObjectRequest()  
  
    InputStream = file.OpenRead(),  
    BucketName = "my-bucket-name",  
    Key = destPath // <-- in S3 key represents a path  
;  
  
PutObjectResponse response = client.PutObject(request); 

Subir un archivo al depósito de S3 mediante una API de alto nivel:

IAmazonS3 client = new AmazonS3Client("AKI...access-key...", "+8Bo...secrey-key...", RegionEndpoint.APSoutheast2);  

FileInfo localFile = new FileInfo(@"c:test.txt");  
string destPath = @"foldersub-foldertest.txt"; // <-- high-level s3 path uses 
 
S3FileInfo s3File = new S3FileInfo(client, "my-bucket-name", destPath);  
if (!s3File.Exists)  
  
    using (var s3Stream = s3File.Create()) // <-- create file in S3  
      
        localFile.OpenRead().CopyTo(s3Stream); // <-- copy the content to S3  
      
  

Te mostramos comentarios y puntuaciones

Si te ha resultado de utilidad nuestro artículo, sería de mucha ayuda si lo compartes con el resto juniors y nos ayudes a difundir nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *