Как использовать Aquantum Multiple File Uploader (плагин Jquery) для DotNetNuke? - PullRequest
2 голосов
/ 31 марта 2011

Я пытаюсь использовать Загрузка нескольких файлов Aquantum в DotNetNuke, но я не могу заставить его работать. Очевидно, потому что я не могу установить тег формы.

Кто-нибудь знает, как реализовать вставку без использования тега формы?

Например: образцы показывают следующее:

    <form id="file_upload" class="file_upload" runat="server">
      <div id = "filediv">
        <input type="file" name="file" multiple>
        <button>Upload</button>
        <div>Upload files</div>
      </div>
      <table id="files"></table> ...
    </form>

Но я бы хотел сделать следующее:

    <div id="file_upload" class="file_upload" runat="server">
      <div id = "filediv">
        <input type="file" name="file" multiple>
        <button>Upload</button>
        <div>Upload files</div>
      </div>
      <table id="files"></table> ...
    </div>

Я использую Javascript:

  <script>
        /*global $ */
        $(function() {


            $('.file_upload').fileUploadUI({
                url: 'FileUpload.ashx',
                method: 'POST',
                uploadTable: $('#files'),
                downloadTable: $('#files'),
                buildUploadRow: function (files, index) {
                    return $('<tr><td>' + files[index].name + '<\/td>' +
                        '<td class="file_upload_progress"><div><\/div><\/td>' +
                        '<\/td><\/tr>');
                },
                buildDownloadRow: function(file) {
                return $('<tr id="file_'+file.name+'"><td>' + file.name + '<\/td>'
                    + '<td class="file_uploaded">' +
                    '<span class="ui-icon ui-icon-check"><\/span>' +
                    '<\/td><\/tr>');

                }, beforeSend: function(event, files, index, xhr, handler, callBack) {
                    if (files[index].size > 500000) {
                        handler.uploadRow.find('.file_upload_progress').html('<span class="ui-icon ui-icon-alert"><\/span>FILE TOO BIG!');
                        setTimeout(function() {
                            handler.removeNode(handler.uploadRow);
                        }, 10000);
                        return;
                    }
                    callBack();
                }
            });
        });
    </script> 

Спасибо! Любая помощь будет приветствоваться!

1 Ответ

1 голос
/ 31 марта 2011

Глядя на документацию, похоже, что вам нужно использовать form для поддержки IE & Opera, но единственным form, доступным в DNN, является основной WebForms. Возможно, вы захотите перенести поведение FileUpload.ashx в HttpHandler, который настроен в web.config. Затем вы можете обработать запрос до того, как это сделает DNN (добавьте какой-нибудь флаг к сообщению, используя опцию formData в плагине jQuery, а затем найдите это в своем обработчике).

Глядя на ваш код, кажется, что он должен работать для других браузеров. первый FAQ в документации говорит, что вам просто нужно установить опции url, method и fieldName для работы с формой для браузеров, которые ее поддерживают (так что вы можете попробовать установить fieldName и посмотрим, поможет ли это).

Какую проблему вы видите? Есть ошибки JavaScript? Ваш обработчик ASHX находится под ударом?

...