This is a migrated thread and some comments may be shown as answers.

Feedback On Cloud Uploader

7 Answers 100 Views
CloudUpload
This is a migrated thread and some comments may be shown as answers.
Eric
Top achievements
Rank 1
Eric asked on 28 Oct 2013, 05:31 PM

Hi Telerik Folk!

First of all, the cloud uploader is totally what we needed! Our web application is hosted as Microsoft's Windows Azure Website (WAWS), and having the file stream straight into blobage is critical since WAWS has only limited local disk space for "temp" storage of uploads.

Nicely done, and we really like the UI!

Two things on our wish list:

1) We have many storage accounts in Azure, each located in multiple places around the world. Also, each collection of files is stored in it's own "Collection". So we need to be able to change the storage location for each file being uploaded. I notice there is mention of this capability using the handler. Could you please provide a code example?

2) Right now we are encrypting files (using AES 256 bit) after they upload by copying the blob from where it landed, to it's final destination. This works fine with small files, but with large files this takes a long time to happen. Our wish is to encrypt the stream on the upload. I have code I can send you that is doing this. It's real easy. Also, it would be great to add three optional properties added:

* AES Encryption (bool)
* Bit option (int)
* InitializationVector (byte[])
* SymetricKey (byte[])

Thanks! And fantastic work!

-Eric

    

7 Answers, 1 is accepted

Sort by
0
Peter Filipov
Telerik team
answered on 29 Oct 2013, 11:52 AM
Hi Eric,

I am sending you a sample project which you could use to achieve request 1). We are going to consider an easier way to implement this. E.g. by overriding one method in the CloudUpload handler.

Regarding to request 2) now it is not possible to achieve this. Your suggestion is valuable and we are going to consider to expose an access point in our handler where the developer could manipulate the uploaded stream.

Regards,
Peter Filipov
Telerik
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
0
Mohan Prasath
Top achievements
Rank 1
answered on 01 Nov 2013, 06:58 AM
Hi Peter, 
I am looking for the same functionality. I have different accounts(this we can get based on the person joining or raising the request) of Azure. May I know how to change the account name and key based on the Login . I also checked the above given example. But I couldn't find anything useful. Can you tell in depth how can we pro-grammatically specify the accounts in cloud Upload. 

Moreover I couldn't find any configuration class for the file upload. 

Thanks & Regards,
 Mohan Prasath S J
0
Peter Filipov
Telerik team
answered on 01 Nov 2013, 08:00 AM
Hi Mohan,

You could only change programmatically the KeyName under which the file is stored. The described functionality is not implemented yet. We are aware of it and will do our best to add it for the next release.
Let me know if you have other suggestions.

Regards,
Peter Filipov
Telerik
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
0
Eric
Top achievements
Rank 1
answered on 01 Nov 2013, 07:39 PM
Hello Mohan,

I am currently using the CloudUploader to upload the file(s) into a "temporary" area.

Next, when the CloudUploader is finished uploading the files, it fires a JavaScript event. I capture this event to force a "post back."

When the postback happens, I read the FileUploaded (I think that is the name), property of the ClouldUploader event.

Using this list of uploaded files, I now "copy" the files from where they are loaded, to the final resting place in Azure blobbage.

During this last step you can move the files into any container or storage account you wish. You can even change file names and encrypt the files. This works well with small files, but large ones this does delay things.

Cheers,

-Eric
0
Mohan Prasath
Top achievements
Rank 1
answered on 04 Nov 2013, 02:15 AM
Hi.

@Peter: Thanks for your reply. Been fed-up with this for one whole day. Now I am finally move to find a different solution.

@Eric: Thank you for your answers. Your solution would work if I am using only single account. But I am using different login accounts for different users. Let me know if you have any solution also. 

Regards, 

Mohan
0
Eric
Top achievements
Rank 1
answered on 04 Nov 2013, 03:44 AM
Hi Mohan,

I don't know how you have your account configured, but for me, I use a single account to upload the blob into Microsoft Azure "temporary" area, then move the blob to another container based on the user login.

This might help. You can then use the asynchronous cross account copy.

In effect, you using a single account with Cloud Uploader to files into a "temporary" area. Then, use the asynchronous cross account copy to move the files into your final destination.

An alternative way (and I think slower), is to copy from stream you can use (read the temporary blob into a stream, then write it back out again). Here is psudeo code:

 

CloudBlockBlob tempBlob = tempContainer.GetBlockBlobReference("temp_reference");

CloudBlockBlob blobToCreate = container.GetBlockBlobReference("final_location_reference");
blobToCreate.UploadFromStream(tempBlob.OpenRead());

Both references above can be built using different accounts, and, different containers.


Trick then becomes where to put the Blob Account information? If the accounts are static, then, the best location is to store your blob account information in the <appSettings> of your web.config.

Better yet, if you are using Windows Azure Web Sites (WAWS), store the keys in the <appSettings> section of your dashboard (and not in your web.config). This is very secure.

If your accounts are very dynamic, then, store the keys in a blob table (you can even get tricky and encrypt the info there).

Hope this gives a ray of hope!

Good night from California!

-Eric

0
Ray
Top achievements
Rank 1
answered on 23 Nov 2013, 09:03 PM

Empty examples not that usefull..

public class HandlerTest : Telerik.Web.UI.CloudUploadHandler

{

}

Tags
CloudUpload
Asked by
Eric
Top achievements
Rank 1
Answers by
Peter Filipov
Telerik team
Mohan Prasath
Top achievements
Rank 1
Eric
Top achievements
Rank 1
Ray
Top achievements
Rank 1
Share this question
or