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.