internal static void CreateMultiPartS3Blob(AmazonS3Client client, string key, S3CopyMemoryStream stream) { if (stream.InitiatingPart) { InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest() .WithBucketName("static.getbrickpile.com") .WithCannedACL(S3CannedACL.PublicRead) .WithKey(key); InitiateMultipartUploadResponse initiateResponse = client.InitiateMultipartUpload(initiateMultipartUploadRequest); stream.UploadPartId = initiateResponse.UploadId; } stream.Position = 0; UploadPartRequest uploadPartRequest = new UploadPartRequest() .WithBucketName("static.getbrickpile.com") .WithKey(key) .WithPartNumber(stream.WriteCount) .WithPartSize(stream.Position) .WithUploadId(stream.UploadPartId) .WithInputStream(stream) as UploadPartRequest; UploadPartResponse response = client.UploadPart(uploadPartRequest); PartETag etag = new PartETag(response.PartNumber, response.ETag); stream.PartETagCollection.Add(etag); if (stream.EndOfPart) { CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest() .WithBucketName("static.getbrickpile.com") .WithKey(key) .WithPartETags(stream.PartETagCollection) .WithUploadId(stream.UploadPartId); CompleteMultipartUploadResponse completeMultipartUploadResponse = client.CompleteMultipartUpload(completeMultipartUploadRequest); string loc = completeMultipartUploadResponse.Location; } }
public S3CopyMemoryStream WithS3CopyFileStreamEvent(StartUploadS3CopyFileStreamEvent doing) { S3CopyMemoryStream s3CopyStream = new S3CopyMemoryStream(this._key, this._buffer, _client); s3CopyStream.StartUploadS3FileStreamEvent = AmazonS3VirtualFile.CreateMultiPartS3Blob; return s3CopyStream; }
/// <summary> /// Opens the specified file mode. /// </summary> /// <param name="fileMode">The file mode.</param> /// <returns></returns> public override Stream Open(FileMode fileMode) { byte[] buffer = new byte[_provider.MaxRequestLength]; S3CopyMemoryStream s3CopyStream = new S3CopyMemoryStream(this._virtualPath.Replace(_provider.VirtualPathRoot, string.Empty), buffer, (AmazonS3Client) this._client).WithS3CopyFileStreamEvent(CreateMultiPartS3Blob); return s3CopyStream; }