Ejemplo n.º 1
0
 public void Upload(string SourceLocation)
 {
      
     ObjectAddResponse response = null;
     ObjectAddRequest request = null;
     try
     {
         request = new ObjectAddRequest(m_buckname, m_key);
         if (m_key.EndsWith("/"))
         {
             //request.LoadStreamWithString("");
         }
         else
             request.LoadStreamWithFile(SourceLocation);
         response = Service.ObjectAdd(request);
         
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         if (request != null && request.DataStream != null)
             request.DataStream.Close();
         if (response != null && response.DataStream != null)
             response.DataStream.Close();
     }
 }
Ejemplo n.º 2
0
      public void Add(Stream data, string key, string contentType)
      {
         //using (ObjectAddRequest objectAddRequest = new ObjectAddRequest(S3Storage.BucketName, key))
         //{
         //   byte[] buffer = new byte[data.Length];

         //   data.Read(buffer, 0, (int)data.Length);

         //   objectAddRequest.LoadStreamWithBytes(buffer, contentType);

         //   using (ObjectAddResponse objectAddResponse = _service.ObjectAdd(objectAddRequest))
         //   { }
         //}

         // The first thing we need to do is check for the presence of a Temporary Redirect.  These occur for a few
         // minutes after an EU bucket is created, while S3 creates the DNS entries.  If we get one, we need to upload
         // the file to the redirect URL

         try
         {
            String redirectUrl = null;
            using (BucketListRequest testRequest = new BucketListRequest(BucketName))
            {
               testRequest.Method = "HEAD";
               using (BucketListResponse testResponse = _service.BucketList(testRequest))
               {
                  if (testResponse.StatusCode == System.Net.HttpStatusCode.TemporaryRedirect)
                  {
                     redirectUrl = testResponse.Headers["Location"].ToString() + key;
                  }
               }
            }

            using (ObjectAddRequest request = new ObjectAddRequest(BucketName, key))
            {
               //request.Headers.Add("x-amz-acl", "public-read-write");
               //request.ContentType = ThreeSharpUtils.ConvertExtensionToMimeType(Path.GetExtension(strKey));
               //request.DataStream = oStream;
               //request.BytesTotal = (request.DataStream).Length;
               //request.Timeout = iTimeout;

               byte[] buffer = new byte[data.Length];
               data.Read(buffer, 0, (int)data.Length);
               request.LoadStreamWithBytes(buffer, contentType);

               if (redirectUrl != null)
               {
                  request.RedirectUrl = redirectUrl;
               }

               using (ObjectAddResponse response = _service.ObjectAdd(request))
               { }
            }
         }
         catch (ThreeSharpException exception)
         {
            throw new BinaryRepositoryException("Upload Failed", exception);
         }
      }
 /// <summary>
 /// Streams a file to a bucket as an object
 /// </summary>
 public void AddFileObject(String bucketName, String keyName, String localfile)
 {
     using (ObjectAddRequest objectAddRequest = new ObjectAddRequest(bucketName, keyName))
     {
         objectAddRequest.LoadStreamWithFile(localfile);
         using (ObjectAddResponse objectAddResponse = this.service.ObjectAdd(objectAddRequest))
         { }
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Adds a string to a bucket, as an object
 /// </summary>
 public void AddStringObject(String bucketName, String keyName, String data)
 {
     using (ObjectAddRequest objectAddRequest = new ObjectAddRequest(bucketName, keyName))
     {
         objectAddRequest.LoadStreamWithString(data);
         using (ObjectAddResponse objectAddResponse = this.service.ObjectAdd(objectAddRequest))
         { }
     }
 }
 /// <summary>
 /// Streams a file to a bucket as an object, with encryption
 /// </summary>
 public void AddEncryptFileObject(String bucketName, String keyName, String localfile, String encryptionKey, String encryptionIV)
 {
     using (ObjectAddRequest objectAddRequest = new ObjectAddRequest(bucketName, keyName))
     {
         objectAddRequest.LoadStreamWithFile(localfile);
         objectAddRequest.EncryptStream(encryptionKey, encryptionIV);
         using (ObjectAddResponse objectAddResponse = this.service.ObjectAdd(objectAddRequest))
         { }
     }
 }
Ejemplo n.º 6
0
      public void Add(Stream data, string key, string contentType)
      {
         using (ObjectAddRequest objectAddRequest = new ObjectAddRequest(S3Storage.BucketName, key))
         {
            byte[] buffer = new byte[data.Length];

            data.Read(buffer, 0, (int)data.Length);

            objectAddRequest.LoadStreamWithBytes(buffer, contentType);

            using (ObjectAddResponse objectAddResponse = _service.ObjectAdd(objectAddRequest))
            { }
         }
      }
Ejemplo n.º 7
0
        private void UploadImage(IThreeSharp service, Stream oStream, string strKey, string contentType)
        {
            using (ObjectAddRequest objectAddRequest = new ObjectAddRequest(S3Storage.BucketName, strKey))
            {
                byte[] buffer = new byte[oStream.Length];

                oStream.Read(buffer, 0, (int)oStream.Length);

                objectAddRequest.LoadStreamWithBytes(buffer, contentType);

                using (ObjectAddResponse objectAddResponse = service.ObjectAdd(objectAddRequest))
                { }
            }


            //// The first thing we need to do is check for the presence of a Temporary Redirect.  These occur for a few
            //// minutes after an EU bucket is created, while S3 creates the DNS entries.  If we get one, we need to upload
            //// the file to the redirect URL
            //String redirectUrl = null;
            //using (BucketListRequest testRequest = new BucketListRequest(S3Storage.BucketName))
            //{
            //   testRequest.Method = "HEAD";
            //   using (BucketListResponse testResponse = service.BucketList(testRequest))
            //   {
            //      if (testResponse.StatusCode == System.Net.HttpStatusCode.TemporaryRedirect)
            //      {
            //         redirectUrl = testResponse.Headers["Location"].ToString() + strKey;
            //      }
            //   }
            //}

            //using (ObjectAddRequest request = new ObjectAddRequest(S3Storage.BucketName, strKey))
            //{
            //   request.Headers.Add("x-amz-acl", "public-read-write");
            //   //request.ContentType = ThreeSharpUtils.ConvertExtensionToMimeType(Path.GetExtension(strKey));
            //   request.DataStream = oStream;
            //   request.BytesTotal = (request.DataStream).Length;
            //   //request.Timeout = iTimeout;

            //   if (redirectUrl != null)
            //   {
            //      request.RedirectUrl = redirectUrl;
            //   }

            //   using (ObjectAddResponse response = service.ObjectAdd(request))
            //   { }
            //}
        }
Ejemplo n.º 8
0
        private void UploadFile(String bucketName, String filename)
        {
            // The first thing we need to do is check for the presence of a Temporary Redirect.  These occur for a few
            // minutes after an EU bucket is created, while S3 creates the DNS entries.  If we get one, we need to upload
            // the file to the redirect URL

            String redirectUrl = null;
            using (BucketListRequest testRequest = new BucketListRequest(bucketName))
            {
                testRequest.Method = "HEAD";
                using (BucketListResponse testResponse = service.BucketList(testRequest))
                {
                    if (testResponse.StatusCode == System.Net.HttpStatusCode.TemporaryRedirect)
                    {
                        redirectUrl = testResponse.Headers["Location"].ToString() + filename.Replace(' ', '_');
                    }
                }
            }

            using (ObjectAddRequest request = new ObjectAddRequest(bucketName, filename.Replace(' ', '_')))
            {
                request.Headers.Add("x-amz-acl", Properties.Settings.Default.AclType);
                request.LoadStreamWithFile(this.basePath + filename);

                if (redirectUrl != null)
                {
                    request.RedirectUrl = redirectUrl;
                }

                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }

            this.listBoxObjects.Invoke(listBucketDelegate, new object[] { bucketName });
        }
Ejemplo n.º 9
0
        static void DemonstrateThreeSharp()
        {
            Console.WriteLine("===========================================");
            Console.WriteLine("Demonstrating the ThreeSharp Library");
            Console.WriteLine("===========================================");

            ThreeSharpConfig config = new ThreeSharpConfig();
            config.AwsAccessKeyID = awsAccessKeyId;
            config.AwsSecretAccessKey = awsSecretAccessKey;

            IThreeSharp service = new ThreeSharpQuery(config);

            // Convert the bucket name to lowercase for vanity domains.
            // the bucket must be lower case since DNS is case-insensitive.
            Random r = new Random();
            string testBucketName = awsAccessKeyId.ToLower() + "-test-bucket" + r.Next(50000).ToString();;
            string testBucketName2 = awsAccessKeyId.ToLower() + "-test-bucket" + r.Next(50000).ToString(); ;
            string stringKeyName = "StringObject";
            string encryptedFileKeyName = "EncryptedFileObject";


            Console.WriteLine("\n----- Creating Bucket " + testBucketName + " -----");
            using (BucketAddRequest request = new BucketAddRequest(testBucketName))
            using (BucketAddResponse response = service.BucketAdd(request))
            { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName))
            using (BucketListResponse response = service.BucketList(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Creating Bucket " + testBucketName2 + " -----");
            using (BucketAddRequest request = new BucketAddRequest(testBucketName2))
            using (BucketAddResponse response = service.BucketAdd(request))
            { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName2 + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName2))
            using (BucketListResponse response = service.BucketList(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Adding String Object to " + testBucketName + " -----");
            using (ObjectAddRequest request = new ObjectAddRequest(testBucketName, stringKeyName))
            {
                request.LoadStreamWithString("This is a string object.");
                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Getting String Object -----");
            using (ObjectGetRequest request = new ObjectGetRequest(testBucketName, stringKeyName))
            {
                using (ObjectGetResponse response = service.ObjectGet(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Copying String Object to " + testBucketName2 + " -----");
            using (ObjectCopyRequest request = new ObjectCopyRequest(testBucketName, stringKeyName, testBucketName2, stringKeyName + "Copy"))
            using (ObjectCopyResponse response = service.ObjectCopy(request))
            {
                int i = 0;
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName2 + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName2))
            using (BucketListResponse response = service.BucketList(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Getting Copied String Object -----");
            using (ObjectGetRequest request = new ObjectGetRequest(testBucketName2, stringKeyName + "Copy"))
            {
                using (ObjectGetResponse response = service.ObjectGet(request))
                {
                    Console.WriteLine(response.StreamResponseToString());
                }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();


            Console.WriteLine("\n----- Streaming File Object -----");
            using (ObjectAddRequest request = new ObjectAddRequest(testBucketName, uploadFile))
            {
                request.LoadStreamWithFile(uploadPath + uploadFile);
                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Streaming/Encrypting File Object -----");
            using (ObjectAddRequest request = new ObjectAddRequest(testBucketName, uploadFile + "Encrypted"))
            {
                request.LoadStreamWithFile(uploadPath + uploadFile);
                request.EncryptStream(encryptionKey, encryptionIV);
                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName))
            using (BucketListResponse response = service.BucketList(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Streaming File to Disk -----");
            using (ObjectGetRequest request = new ObjectGetRequest(testBucketName, uploadFile))
            using (ObjectGetResponse response = service.ObjectGet(request))
            {
                response.StreamResponseToFile(downloadPath + uploadFile);
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Streaming/Decrypting File to Disk -----");
            using (ObjectGetRequest request = new ObjectGetRequest(testBucketName, uploadFile + "Encrypted"))
            using (ObjectGetResponse response = service.ObjectGet(request))
            {
                response.DecryptStream(encryptionKey, encryptionIV);
                response.StreamResponseToFile(downloadPath + "decrypted-" + uploadFile);
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Query String Authorization Example -----");
            using (UrlGetRequest request = new UrlGetRequest(testBucketName, uploadFile))
            {
                request.ExpiresIn = 60 * 1000;
                using (UrlGetResponse response = service.UrlGet(request))
                {
                    Console.WriteLine("Try this url in your web browser (it will only work for 60 seconds)\n");
                    Console.WriteLine(response.StreamResponseToString());
                }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Adding String Object with Metadata and Public Read ACL -----");
            using (ObjectAddRequest request = new ObjectAddRequest(testBucketName, stringKeyName + "Public"))
            {
                request.LoadStreamWithString("This is a publicly readable test.");
                request.MetaData.Add("blah", "foo");
                //request.Headers.Add("x-amz-acl", "private");
                request.Headers.Add("x-amz-acl", "public-read");
                //request.Headers.Add("x-amz-acl", "public-read-write");
                //request.Headers.Add("x-amz-acl", "authenticated-read");
                using (ObjectAddResponse response = service.ObjectAdd(request))
                { }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Getting Object's ACL -----");
            using (ACLGetRequest request = new ACLGetRequest(testBucketName, stringKeyName + "Public"))
            using (ACLGetResponse response = service.ACLGet(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Deleting Objects -----");
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName, stringKeyName))
            using (ObjectDeleteResponse response = service.ObjectDelete(request))
            { }
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName2, stringKeyName + "Copy"))
            using (ObjectDeleteResponse response = service.ObjectDelete(request))
            { }
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName, uploadFile))
            using (ObjectDeleteResponse response = service.ObjectDelete(request))
            { }
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName, uploadFile + "Encrypted"))
            using (ObjectDeleteResponse response = service.ObjectDelete(request))
            { }
            using (ObjectDeleteRequest request = new ObjectDeleteRequest(testBucketName, stringKeyName + "Public"))
            using (ObjectDeleteResponse response = service.ObjectDelete(request))
            { }

            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName))
            using (BucketListResponse response = service.BucketList(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing Bucket " + testBucketName2 + " -----");
            using (BucketListRequest request = new BucketListRequest(testBucketName2))
            using (BucketListResponse response = service.BucketList(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing All My Buckets -----");
            using (BucketListRequest request = new BucketListRequest(null))
            using (BucketListResponse response = service.BucketList(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Deleting Bucket " + testBucketName + " -----");
            using (BucketDeleteRequest request = new BucketDeleteRequest(testBucketName))
            using (BucketDeleteResponse response = service.BucketDelete(request))
            { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Deleting Bucket " + testBucketName2 + " -----");
            using (BucketDeleteRequest request = new BucketDeleteRequest(testBucketName2))
            using (BucketDeleteResponse response = service.BucketDelete(request))
            { }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\n----- Listing All My Buckets -----");
            using (BucketListRequest request = new BucketListRequest(null))
            using (BucketListResponse response = service.BucketList(request))
            {
                Console.WriteLine(response.StreamResponseToString());
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

            Console.WriteLine("\nTotal data transfers: " + service.GetTransfers().Length.ToString());
            Console.WriteLine("Total bytes uploaded: " + service.GetTotalBytesUploaded().ToString());
            Console.WriteLine("Total bytes downloaded: " + service.GetTotalBytesDownloaded().ToString());
            Console.WriteLine("\npress enter >");
            Console.ReadLine();

        }
Ejemplo n.º 10
0
    protected void SlickUpload1_UploadComplete(object sender, UploadStatusEventArgs e)
    {
        uploadPanel.Visible = false;
        resultPanel.Visible = true;

        if (e.UploadedFiles != null && e.UploadedFiles.Count > 0)
        {
            Dictionary<string, string> status = new Dictionary<string, string>();

            status["percentComplete"] = "0";
            status["percentCompleteText"] = "0%";

            // Update the progress context
            e.Status.UpdatePostProcessStatus(status);

            string bucket = ConfigurationManager.AppSettings["awsBucket"];

            long totalLength = 0;
            long transferredLength = 0;

            // Calculate total length
            foreach (UploadedFile uFile in e.UploadedFiles)
                totalLength += uFile.ContentLength;

            // Upload each file
            foreach (UploadedFile uFile in e.UploadedFiles)
            {
                string fileName = uFile.LocationInfo[FileUploadStreamProvider.FileNameKey];

                using (ObjectAddRequest req = new ObjectAddRequest(bucket, Server.UrlEncode(uFile.ClientName)))
                {
                    req.LoadStreamWithFile(fileName);

                    // Create and fire up a new thread to do the actual upload
                    Thread t = new Thread(UploadThread);

                    t.Start(req);

                    while (t.IsAlive && req.BytesTransferred < req.BytesTotal)
                    {
                        float percentComplete = ((transferredLength + req.BytesTransferred) / (float)totalLength);

                        status["percentComplete"] = (percentComplete * 100).ToString("f2");
                        status["percentCompleteText"] = percentComplete.ToString("p2");

                        // Update the progress context
                        e.Status.UpdatePostProcessStatus(status);

                        // wait 500ms
                        Thread.Sleep(500);
                    }
                }

                transferredLength += uFile.ContentLength;

                File.Delete(fileName);
            }

            status["percentComplete"] = "100";
            status["percentCompleteText"] = "100 %";

            // Update the progress context
            e.Status.UpdatePostProcessStatus(status, true);

            resultsRepeater.DataSource = e.UploadedFiles;
            resultsRepeater.DataBind();

            resultsRepeater.Visible = true;

            if (_s3Exception != null)
            {
                errorMessage.InnerHtml += _s3Exception.GetType().FullName + ": " + _s3Exception.Message;
                errorMessage.Visible = true;
            }
        }
        else
        {
            resultsRepeater.Visible = false;
        }
    }