private void putStorageItem(string containerName, Stream storageStream, string remoteStorageItemName, Dictionary<string, string> metadata, EventHandler<UploadProgress> callback, Object context)
        {
            var putStorageItem = new PutStorageItem(StorageUrl, containerName, remoteStorageItemName, storageStream, metadata);
            if (callback != null)
            {
                UploadProgress eventArgs = new UploadProgress((UInt64)storageStream.Length, this, callback, context)
                {
                    MaxBytesTxDeltaFreq = this.MaxBytesTxDeltaFreq,
                    MaxCallbackFreq = this.MaxCallbackFreq,
                    MinBytesTxDeltaFreq = this.MinUploadBytesTxDeltaFreq
                };

                putStorageItem.Progress += (x) => { eventArgs.OnProgress(x); };
            }

            // add the general upload progress handlers
            foreach (var storedCallback in _callbackFuncs)
            {
                putStorageItem.Progress += storedCallback;
            }

            _requestfactory.Submit(putStorageItem, AuthToken, _usercreds.ProxyCredentials);
        }
        private void putStorageItem(string containerName, string localFilePath, Dictionary<string, string> metadata, EventHandler<UploadProgress> callback, Object context)
        {
            UInt64 filesize = 0;
            using (FileStream file = new FileStream(localFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                filesize = (UInt64)file.Length;
            }

            var remoteName = Path.GetFileName(localFilePath);
            var localName = localFilePath.Replace("/", "\\");
            var putStorageItem = new PutStorageItem(StorageUrl, containerName, remoteName, localName, metadata);

            if (callback != null)
            {
                // add the caller's upload specific upload progress handler
                UploadProgress eventArgs = new UploadProgress(filesize, this, callback, context)
                {
                    MaxBytesTxDeltaFreq = this.MaxBytesTxDeltaFreq,
                    MaxCallbackFreq = this.MaxCallbackFreq,
                    MinBytesTxDeltaFreq = this.MinUploadBytesTxDeltaFreq
                };

                putStorageItem.Progress += (x) => { eventArgs.OnProgress(x); };
            }

            // add the general upload progress handlers
            foreach (var storedCallback in _callbackFuncs)
            {
                putStorageItem.Progress += storedCallback;
            }

            _requestfactory.Submit(putStorageItem, AuthToken, _usercreds.ProxyCredentials);
        }