Кендо загрузчик не работает

Во-первых, я новичок в Kendo Uploder. У меня есть загрузчик кендо на моей странице. Я не знаю, что я делаю неправильно, так как это не повлияло на мой метод VB.

Разметка:

    <script id="fileTemplate" type="text/x-kendo-template">
                <span class='k-progress'></span>
                <div class='file-wrapper'>
                    <h4 class='file-heading file-name-heading'>Name: #=name#</h4>
                    <h4 class='file-heading file-size-heading'>Size: #=size# bytes</h4>
                    <button type='button' class='k-upload-action'></button>
                </div>
    </script>

    <script>
        $(document).ready(function () {
            $("#files").kendoUpload({
                multiple: true,
                async: {
                    saveUrl: "NewFolder.aspx/UploadSubSRFiles",
                    removeUrl: "Remove",
                    autoUpload: true
                },
                upload: onUpload,
                template: kendo.template($('#fileTemplate').html())
            });
            function onUpload(e) {

                var paramsEmailDocs = "{'strFiles':'" + e.files + "'}"
                Request.files
                $.ajax({
                    type: "POST",
                    url: "NewFolder.aspx/UploadSubSRFiles",
                    data: paramsEmailDocs ,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: false,
                    success: function (data) {

                    }
                })
            }
        });
    </script>

HTML:

<div id="example" class="k-content">
     <input type="file" name="files" id="files" />
</div>

Метод ВБ:

    ''' <summary>
    ''' Method for getting the Template Service request Object
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    <WebMethod()> _
    Public Shared Function UploadSubSRFiles(ByVal strFiles As HttpPostedFileBase) As Boolean
        Try
            If lngUserID > 0 Then
                Return True
            Else
                Return Nothing
            End If
        Catch ex As Exception
            Debug.WriteLine("Error in UploadSubSRFiles method of Folder page: " + ex.Message)
            Return Nothing
        End Try
    End Function

Проблема: в интерфейсе, когда я перетаскиваю файлы . Описание файлов соответствует шаблону. Но метод VB никогда не срабатывает. Я новичок в этом, поэтому может быть мой код VB или скрипта неверен. Пожалуйста, направь меня.

Любая помощь будет высоко оценена.


person Nitin Rawat    schedule 08.04.2014    source источник


Ответы (2)


Вы не можете загружать файлы с $.ajax. В основном вам не нужно устанавливать обработчик события загрузки. Достаточно просто установить async.saveUrl. Вот живая демонстрация http://demos.telerik.com/kendo-ui/web/upload/async.html

person Atanas Korchev    schedule 08.04.2014
comment
Да, я пробовал это также после удаления загрузки, но мой метод VB вообще не работает. Мой вопрос в том, что мне не хватает в моем методе VB. - person Nitin Rawat; 08.04.2014
comment
В указанной вами демонстрации используется URL-сохранение. В моем случае у меня есть метод в файле VB, который будет содержать код для сохранения данных в БД. Я не знаю, чего мне не хватает, поскольку он не попадает. - person Nitin Rawat; 08.04.2014
comment
Проверьте инструменты разработчика браузера на наличие ошибок HTTP. - person Atanas Korchev; 08.04.2014

Вы не можете передавать параметры методам, которые обрабатывают загрузку файлов с помощью методов .aspx или .asmx. Что вам нужно сделать, так это создать обработчик загрузки.

JS-код:

  $("#files").kendoUpload({
            multiple: false,
            async: {
                saveUrl: '/UploadHandler.ashx'
            },
            upload: function (request) {
                // custom parameters
                request.data = { companyId: _companyId };
            }
        });

C# (VB)

<%@ WebHandler Language="C#" Class="UploadHandler" %>

using System;
using System.Web;

public class UploadHandler : IHttpHandler {

    public void ProcessRequest (HttpContext context)
    {
        var file = context.Request.Files[0];
        var companyId = context.Request.Form["companyId"];
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
    }

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

Если вам не нужно передавать пользовательские параметры, просто получите файлы из Context.Request.Files из веб-метода страницы .asmx, .aspx.

person IHAFURR    schedule 16.06.2021