The RadCloudUpload doesn't handle correctly situation, when the communication between client and server becomes disconnected - the client side doesn't get notified (the upload keeps spinning). All the details and steps to reproduced are in the following thread: http://www.telerik.com/account/support-tickets/view-ticket.aspx?threadid=951973 Thanks, Vlad.
There is a problem with uploading file which name contains greek, hebrew or russian letters. It is also replicated with other languages that contain non-latin letters, such as Japanese or Korean. Here are the steps to reproduce the problem. 1. Create text file "Καλώς ήλθατε.txt" and save it on local disc (file may contain any text). 2. Open http://demos.telerik.com/aspnet-ajax/cloud-upload/examples/overview/defaultcs.aspx 3. Click Select button and browse file "Καλώς ήλθατε.txt" 4. Message "Uploading Files 1/1" is displayed but file is not uploaded. 1. Create file Благодатное-небо-с-предстоящими.txt on local disc (file may contain any text). 2. Open http://demos.telerik.com/aspnet-ajax/cloud-upload/examples/overview/defaultcs.aspx 3. Click Select button and browse file Καλώς ήλθατε.txt 4. Message "Uploading Files 1/1" is displayed but file is not uploaded. Here is the error from the console when trying to upload such a file: Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl00_QsfScriptManager_TSM&compress=1&_TSM_Combine…:6 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_Combine…:6) at Function.Error.argument (Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl00_QsfScriptManager_TSM&compress=1&_TSM_Combine…:6) at Function.Sys.Serialization.JavaScriptSerializer.deserialize (Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl00_QsfScriptManager_TSM&compress=1&_TSM_Combine…:6) at c.RadCloudUpload.HandlerUploader._successfulResponseStatus (RadCloudUploadScripts.js:477) at XMLHttpRequest.p (RadCloudUploadScripts.js:463)
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
Please consider adding Rackspace (uses OpenStack) to the list of custom providers or make it simple to plug in a custom provider. All the providers are fairly cookie cutter... jack
It would be interesting to know what state is sending: Receiving file, assembly file... It is not practical, take longer to assemble than submit, given the experience with the end-user interface... (tested with Azure) Regards
ADD: Tokens authentication support for RadCloudUpload's Amazon Provider
ADD: Functionality to set Amazon provider's keys via properties.