protected override void ExecuteS3Task() { if ( !File.Exists( this.SourceFile ) ) { throw new BuildException( "source-file does not exist: " + this.SourceFile ); } using ( TransferUtility transferUtility = new Amazon.S3.Transfer.TransferUtility( this.AccessKey, this.SecretAccessKey ) ) { TransferUtilityUploadRequest uploadRequest = new TransferUtilityUploadRequest { BucketName = this.BucketName, FilePath = this.SourceFile, Key = this.DestinationFile }; if ( PublicRead ) { uploadRequest.AddHeader( "x-amz-acl", "public-read" ); } transferUtility.Upload( uploadRequest ); } }
public void Upload() { // Loop through each file in the request for (int i = 0; i < HttpContext.Request.Files.Count; i++) { // Pointer to file var file = HttpContext.Request.Files[i]; var filename = User.Identity.Name + "_" + DateTime.UtcNow.Subtract(new DateTime(1970,1,1,0,0,0, DateTimeKind.Utc)).TotalMilliseconds.ToString().Replace('.', '_') + "_" + file.FileName; int width = 0, height = 0; try { using (var client = new TransferUtility(AuthConfig.AWSPUBLIC, AuthConfig.AWSPRIVATE)) { using (var memoryStream = new MemoryStream()) { using (var yourBitmap = new Bitmap(file.InputStream)) { yourBitmap.Save(memoryStream, ImageFormat.Jpeg); width = yourBitmap.Width; height = yourBitmap.Height; AsyncCallback callback = new AsyncCallback(uploadComplete); var request = new TransferUtilityUploadRequest(); request.BucketName = "TTPosts"; //create a hash of the user, the current time, and the file name //to avoid collisions request.Key = filename; request.InputStream = memoryStream; //makes public request.AddHeader("x-amz-acl", "public-read"); IAsyncResult ar = client.BeginUpload(request, callback, null); client.EndUpload(ar); } } } } catch (AmazonS3Exception amazonS3Exception) { if (amazonS3Exception.ErrorCode != null && (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") || amazonS3Exception.ErrorCode.Equals("InvalidSecurity"))) { Console.WriteLine("Please check the provided AWS Credentials."); Console.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3"); } else { Console.WriteLine("An error occurred with the message '{0}' when writing an object", amazonS3Exception.Message); } return; } catch (Exception e) { Console.WriteLine(e.ToString()); } Posts p = new Posts() { title = "$" + HttpContext.Request.Form["tags"], filename = "http://s3.amazonaws.com/TTPosts/" + filename, owner = WebSecurity.GetUserId(User.Identity.Name), dateuploaded = DateTime.UtcNow, width = width, height = height }; new TTRESTService().PostPost(p); } }
public override async Task AddObject(FileProperties properties, Stream stream, bool overwrite, CancellationToken ct) { string key = ResolveLocalKey(properties.Key); var request = new TransferUtilityUploadRequest { BucketName = _bucket, InputStream = stream, Key = key }; request.AddHeader("x-amz-meta-yas4-ts", properties.Timestamp.ToString("o")); using (var util = new TransferUtility(_s3)) { await util.UploadAsync(request).ConfigureAwait(false); } }
/// <summary> /// Uploads the specified content item to the remote blob storage. /// </summary> /// <param name="content">Descriptor of the item on the remote blob storage.</param> /// <param name="source">The source item's content stream.</param> /// <param name="bufferSize">Size of the upload buffer.</param> /// <returns>The length of the uploaded stream.</returns> public override long Upload(IBlobContent content, Stream source, int bufferSize) { var request = new TransferUtilityUploadRequest() .WithBucketName(this.bucketName) .WithKey(content.FilePath) .WithPartSize(bufferSize) .WithContentType(content.MimeType); //set the item's accessibility as public request.AddHeader("x-amz-acl", "public-read"); //get it before the upload, because afterwards the stream is closed already long sourceLength = source.Length; using (MemoryStream str = new MemoryStream()) { source.CopyTo(str); request.InputStream = str; this.transferUtility.Upload(request); } return sourceLength; }