Project Description
The tool aims at developing an efficient way of uploading large size blobs, as blocks of data to the Windows Azure Blob storage. If the upload fails in the middle, the tool should resume the upload from where it failed (rather than starting over).

Solution Approach
The file to be uploaded is broken down into individual blocks. Each block has a specified size (as specified by the user), and is specified by a unique ID. Each block is scoped by a blob name (which is same as the file name). The upload process uploads each block individually and maintains the information of the current uploading position (specified by the stream position in bytes) in an XML file (uploadmetadata.xml created in the directory from which the tool executable was invoked). Following is a sample of this XML file:

<Root>
    <uploadinfo filename="D:\test\test.exe" streampos="34862440" isUploadComplete="true" />
    <uploadinfo filename="D:\test\test1.exe" streampos="276216" isUploadComplete="false" />
</Root>
In this XML file, each input file which is to be uploaded is specified by an “uploadinfo” node which specifies the: The entire upload process is completed in 2 stages:
uploadprocess.bmp
Tool Details
A GUI based tool has been developed. The tool required the following input from the user: When the user populates all the fields and clicks on the Upload button, the upload process starts. The current status of the upload can be seen in the status progress bar.

following is a snapshot of the tool:
azureblobuploader.bmp

Open Issues