Not getting UploadedFiles.Count although file is attached to RadAsyncUpload

3 posts, 0 answers
  1. Sweta
    Sweta avatar
    10 posts
    Member since:
    Apr 2012

    Posted 09 Apr 2012 Link to this post

    I am using RadAsyncUpload control to upload the single file on button click. But when I hit the button, RadAsyncUpload.UploadedFiles.Count always says 0. Below is my code.

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="QuestionDesigner.aspx.cs"
        MasterPageFile="~/Enigma/Masters/Main.master" Inherits="Enigma_QuestionDesigner"
        EnableEventValidation="false" ValidateRequest="false" %>
     
    <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceHolder" runat="Server">
         <Scripts>
               <asp:ScriptReference Path="~/Enigma/Telerik/Scripts/Common/Core.js" />
                <asp:ScriptReference Path="~/Enigma/Telerik/Scripts/Upload/RadProgressManager.js" />
                <asp:ScriptReference Path="~/Enigma/Telerik/Scripts/Common/jQuery.js" />
                <asp:ScriptReference Path="~/Enigma/Telerik/Scripts/Common/jQueryPlugins.js" />
                <asp:ScriptReference Path="~/Enigma/Telerik/Scripts/Upload/RadUpload.js" />
                <asp:ScriptReference Path="~/Enigma/Telerik/Scripts/AsyncUpload/RadAsyncUploadScripts.js" />
                <asp:ScriptReference Path="~/Enigma/Telerik/Scripts/Common/Popup/PopupScripts.js" />
                <asp:ScriptReference Path="~/Enigma/Telerik/Scripts/Upload/RadProgressArea.js" />
         </Scripts>
    </asp:ScriptManager>
     
    <asp:UpdatePanel ID="upQuestionSection" runat="server" UpdateMode="Conditional">    
            <ContentTemplate>
                <div>
                     <telerik:RadAsyncUpload ID="fileNodeDefinition" runat="server" MaxFileInputsCount="1"
                                AllowedFileExtensions=".xml" MaxFileSize="52428800">
                     </telerik:RadAsyncUpload>
                </div>
        </ContentTemplate>
    </asp:UpdatePanel>
     
    </asp:Content>
     
     
    Below is Cs File Code
     
    public void btnSave_Click(object sender,EventArgs e)
        {
            string filePath;
            if (fileNodeDefinition.UploadedFiles.Count > 0)
            {
                    string file = fileNodeDefinition.UploadedFiles[0].FileName;
                    filePath = HttpContext.Current.Server.MapPath(".\\Upload\\") + file;
                    fileNodeDefinition.UploadedFiles[0].SaveAs(filePath);               
                    fileNodeDefinition.UploadedFiles.Clear();
                    fileNodeDefinition = null;               
                }
        }

    Thanks & Regards,
    Sweta Chotalia
  2. Sweta
    Sweta avatar
    10 posts
    Member since:
    Apr 2012

    Posted 10 Apr 2012 Link to this post

    I have found solution for this issue. In RadAsyncUpload, you need to add property HttpHandlerUrl as below :

    <telerik:RadAsyncUpload ID="fileNodeDefinition" HttpHandlerUrl="~/CustomHandler.ashx"
    runat="server" MaxFileInputsCount="1" AllowedFileExtensions=".xml"></telerik:RadAsyncUpload>                                                        

    Below is the code of HttpHandler file that you need to add to project :

    <%@ WebHandler Language="C#" Class="CustomHandler" %>
     
    using System;
    using System.Web;
    using Telerik.Web.UI;
     
    public class CustomHandler : AsyncUploadHandler
    {
        protected override IAsyncUploadResult Process(UploadedFile file, HttpContext context, IAsyncUploadConfiguration configuration, string tempFileName)
        {
            configuration.TimeToLive = TimeSpan.FromHours(4);
            return base.Process(file, context, configuration, tempFileName);
        }
     
    }

  3. Rubiya
    Rubiya avatar
    1 posts
    Member since:
    May 2017

    Posted 28 May 2017 in reply to Sweta Link to this post

    I have used the solution of HttpHandlers in my project as well as suggested in this post. However it still is not working for me.

    My Async upload Control,(.aspx)

    <telerik:RadAsyncUpload ID="radUpload" runat = "server" Skin = "Silk" Width="430px" MaxFileInputsCount="5" PostbackTriggers="btnSubmit" HttpHandlerUrl="~/CustomHandler.ashx"></telerik:RadAsyncUpload>

     

    .aspx.cs

     

    foreach (UploadedFile file in radUpload.UploadedFiles)
                    {
                        fileName = file.FileName;
                        targetFolder = Server.MapPath("~/Development/Uploads/VOC");
                        if (!Directory.Exists(targetFolder))
                        {
                            Directory.CreateDirectory(targetFolder);
                        }
                        //fileNamefinal = fileName.Split('.')[0] + "_VOC." + fileName.Split('.')[1];
                        file.SaveAs(Path.Combine(targetFolder, fileName.Split('.')[0]+"_VOC."+fileName.Split('.')[1]));
                        fileNamefinal += "," + fileName.Split('.')[0] + "_VOC." + fileName.Split('.')[1];
                    }

     

    my Handler Class

     

    using System;
    using System.Collections;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml.Linq;
    using Telerik.Web.UI;

    namespace EP.Web
    {
        /// <summary>
        /// Summary description for $codebehindclassname$
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        public class CustomHandler : AsyncUploadHandler
        {

            //public void ProcessRequest(HttpContext context)
            //{
            //    context.Response.ContentType = "text/plain";
            //    context.Response.Write("Hello World");
            //}
            protected override IAsyncUploadResult Process(UploadedFile file, HttpContext context, IAsyncUploadConfiguration configuration, string tempFileName)
            {
                configuration.TimeToLive = TimeSpan.FromHours(4);
                return base.Process(file, context, configuration, tempFileName);
            }

            //public bool IsReusable
            //{
            //    get
            //    {
            //        return false;
            //    }
            //}
        }
    }

    I have added the following in web.config.
     <add path="*" type="EP.Web.CustomHandler" validate="false" verb="*"/>

    Is there something that I am missing?Even after doing all this the Uploaded File Count is returning 0

     

Back to Top