We would like to request updating the Azure library for uploading files to Azure Blob Storage.
The WindowsAzure.Storage library has been deprecated and is no longer maintained.
See similar requests from the forums:
Windows Storage has a deprecated reference with RadCloudUpload
Must be migrated to v12 Azure.Storage.Blobs: https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.7.0/sdk/storage/Azure.Storage.Blobs
Add the ability to upload whole folders to the RadCloudUpload, similar to the FR for AsyncUpload:
The same functionality as in the AsyncUpload
Add a functionality, which allows developers to pass query string parameters from client to the custom handler. Similar to RadAsyncUpload.
Workaround:
<telerik:RadCloudUpload ID="RadCloudUpload1" runat="server" ProviderType="Azure"
MultipleFileSelection="Automatic" OnClientFileSelected="onClientFileSelected"
HttpHandlerUrl="~/Handlers/UploadToMultipleFoldersHandler.ashx">
</telerik:RadCloudUpload>
<script>
function onClientFileSelected(sender, args) {
var customParam = "test";
sender._module._handlerUrl = "/Handlers/UploadToMultipleFoldersHandler.ashx?type=rcu&customParam=" + customParam;
}
</script>
<%@ WebHandler Language="C#" Class="UploadToMultipleFoldersHandler" %>
using System;
using System.Web;
public class UploadToMultipleFoldersHandler : Telerik.Web.UI.CloudUploadHandler {
public override void SetKeyName(object sender, Telerik.Web.UI.CloudUpload.SetKeyNameEventArgs e)
{
var param = HttpContext.Current.Request["customParam"];
var carsFolder = HttpContext.Current.User.Identity.Name + "/";
e.KeyName = string.Format("{0}{1}_{2}", carsFolder, Guid.NewGuid(), e.OriginalFileName);
}
}
Affects RadCloudUpload and RadAsyncUpload combined with RadProgressArea. Manifests most often on slow networks or very large files. Scroll down for workarounds for both cases. WORKAROUND FOR PROGRESS AREA is to round down the data, as it seems the server reports more bytes uploaded than they actually are, and that tends to happen under slow network conditions <telerik:RadAsyncUpload RenderMode="Lightweight" runat="server" ID="RadAsyncUpload1" MultipleFileSelection="Automatic" EnableInlineProgress="false" /> <telerik:RadProgressManager runat="server" ID="RadProgressManager1" /> <telerik:RadProgressArea RenderMode="Lightweight" runat="server" ID="RadProgressArea1" OnClientProgressUpdating="OnClientProgressUpdating" /> <script> function OnClientProgressUpdating(sender, args) { //debugger if (args._progressData.PrimaryPercent > 100) { args._progressData.PrimaryPercent = 100; } if (args._progressData.PrimaryValue > args._progressData.PrimaryTotal) { args._progressData.PrimaryValue = args._progressData.PrimaryTotal; } console.log(args.get_progressData()); } </script> WORKAROUND FOR CLOUD UPLOAD is to add the following script at the end of the form that will override the built-in XHR handilng to change the way the totals are calculated: <script> Telerik.Web.UI.RadCloudUpload.HandlerUploader.prototype._initializeXmlHttpRequest = function () { this._xhr = new XMLHttpRequest(); var that = this, module = this._module, xhr = this._xhr; xhr.onreadystatechange = function readyStateChanged() { if (xhr.readyState == 4) { if (xhr.status == 200) { that._successfulResponseStatus(xhr); } else if (xhr.status != 0) { that._failedResponseStatus(xhr); } } }; xhr.upload.onprogress = function (event) { that._uploadedSize += event.loaded; var percents = Math.round((event.loaded / event.total) * 100) + "%"; module._renderingManager.updateRowProgress(that._uploadingEntity.row, percents, true); }; } </script>
When uploading a file to the CloudUpload control with an ’ apostrophe symbol in the name (Examples of the 3C’s.pdf), the control fails with Uncaught Error: Sys.ArgumentException: Cannot deserialize. The data does not correspond to valid JSON. Parameter name: data at Function.Error.create (Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl00_QsfScriptManager_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3ad28568d3-e53e-4706-928f-3765912b66ca%3aea597d4b%3ab25378d2:6) at Function.Error.argument (Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl00_QsfScriptManager_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3ad28568d3-e53e-4706-928f-3765912b66ca%3aea597d4b%3ab25378d2:6) at Function.Sys.Serialization.JavaScriptSerializer.deserialize (Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl00_QsfScriptManager_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3ad28568d3-e53e-4706-928f-3765912b66ca%3aea597d4b%3ab25378d2:6) at c.RadCloudUpload.HandlerUploader._successfulResponseStatus (RadCloudUploadScripts.js:477) at XMLHttpRequest.p (RadCloudUploadScripts.js:463) Note, it's not the typical apostrophe. If you replace ’ with a normal ' windows apostrophe, the control uploads the file just fine. In order to test, create any file on your system using that special character and try to upload that file using the demo application, located: https://demos.telerik.com/aspnet-ajax/cloud-upload/examples/overview/defaultcs.aspx
Ability to add Folder attribute to cloud upload control which gets appended to the SubFolderStructure in the provider. Without it all files go into the same SubFolderStructure folder, not great when thousands of files. Helps to keep the files more organised.
Follow Amazon's migration guide to update the RadCloudUpload to support version 3.x of Amazon's SDK -- it has been out for quite some time. You cannot have both v2 and v3 referenced in the same project, and Telerik forcing us to use v2 is holding back development with other items in v3. http://docs.aws.amazon.com/AWSSdkDocsNET/V3/DeveloperGuide/net-dg-migration-guide-v3.html
The existing RadCloudUpload uses Azure SDK to transfer the files across to the blob. This will lead to an upload handler then upload the files to the server. The problem with this is that to upload a large file it till take a long. Is there any chance to add functionality to send files from client side? The azure now support CORS support which enables us to upload the files faster with no intervention from the server. This will be a knockout. Is there any chance to avoid these handlers and sent it directly to the server. The handler i think is making the uploader extremely slow as compared to the direct uploads from clients like "Azure Storage Explorer 6". Now there is cors support for Azure. It will be nice to see a tool which does direct upload like. flajaxian http://www.flajaxian.com/flajaxian.com/DirectAmazonUploader1.0Help.html. Best Regards Rinu
Allow direct upload to Youtube with Cloud Upload or Async Upload