plUpload загружает только один файл на сервер - HTML4

В нынешнем виде мой код работает с HTML5 и Silverlight. Однако, когда я использую Flash или HTML4, форма загрузки останавливается. И когда я проверяю загруженный каталог, загружается только первый файл. Снимок экрана

Вот мой javascript для одного из загрузчиков:

$("#origShapeUploader").pluploadQueue({

runtimes: 'flash,html4',
url: 'upload.aspx?originals=yes', //with a query string of yes, the files being uploaded won't be given a prefix of 'MOD'
max_file_count: maxfiles,
filters: [
    { title: "Shape files", extensions: "shp,dbf,prj,shx"} //these are the only file types allowed
    ],
multi_selection: true,
flash_swf_url: '/javascript/plupload.flash.swf', //in case silverlight and html5 support doesn't exist
silverlight_xap_url: '/javascript/plupload.silverlight.xap', //silverlight browser extension


});

Для меня это кричащая проблема обработчика на стороне сервера, поэтому вот мой код для обработки загрузки, префикс MOD используется в другой части моей программы.

    if (Request.Files.Count > 0)
    {

    int chunk = Request["chunk"] != null ? int.Parse(Request["chunk"]) : 0;
    string fileName = Request["name"] != null ? Request["name"] : string.Empty;

    HttpPostedFile fileUpload = Request.Files[0];

    var uploadPath = Server.MapPath("~/uploaded-files");
    if (Request.QueryString["originals"] == "yes")
    {
        using (var fs = new FileStream(Path.Combine(uploadPath, fileName), chunk == 0 ? FileMode.Create : FileMode.Append))
        {
            var buffer = new byte[fileUpload.InputStream.Length];
            fileUpload.InputStream.Read(buffer, 0, buffer.Length);
            fs.Write(buffer, 0, buffer.Length);
        }
    }
    else
    {
        using (var fs = new FileStream(Path.Combine(uploadPath, "MOD" + fileName), chunk == 0 ? FileMode.Create : FileMode.Append))
        {
            var buffer = new byte[fileUpload.InputStream.Length];
            fileUpload.InputStream.Read(buffer, 0, buffer.Length);
            fs.Write(buffer, 0, buffer.Length);
        }


    }

}


person Evan Parsons    schedule 19.06.2013    source источник
comment
У меня нет доступа к коду (на предыдущей работе), но, если я помню, казалось, что он вызывал обработчик для каждого элемента в инструменте множественной загрузки. Это тот случай, который вы видите здесь, и в режиме HTML 4 он не загружает ничего, кроме первого элемента?   -  person Garrison Neely    schedule 19.06.2013
comment
Да, он вызывает обработчик для каждого файла ... Думаю, я разобрался. Я положил response.write в целях тестирования в случайном месте ... и теперь он работает ??? Я думаю, что Flash / HTML4 ищет ответ какого-то типа, и прежде чем он будет использовать его для вывода ничего ... так что он будет сидеть и ждать. Теперь, когда я выводлю какой-то HTML каждый раз, когда он попадает в обработчик, он работает?   -  person Evan Parsons    schedule 19.06.2013
comment
Это не очень удовлетворительный ответ. Попробуйте вынуть его и посмотреть, работает ли он без него. Может где-то была плохая сборка? Я полагаю, вы пытались перестроить один или два раза, чтобы очистить старые вещи?   -  person Garrison Neely    schedule 19.06.2013
comment
Вы правы, это не так. Однако я попытался удалить свой ответ. Напишите, он не работает без него. Так что, похоже, моя теория о том, что Flash / HTML ищет какой-то вывод, может быть верной.   -  person Evan Parsons    schedule 20.06.2013
comment
Видите ли вы ответ HTTP 200 от сервера при использовании некоторых клиентских инструментов? Кроме того, буферизуется ли ваш ответ (Response.Buffer = true)? Тогда вы можете попробовать его промыть.   -  person jbl    schedule 20.06.2013
comment
Когда я проверяю с помощью сетевой утилиты Chrome (это правильное название для нее?). С HTML4 / Flash я получаю ответ HTTP 200 от первого элемента, а затем он останавливается после этого. Когда я добавляю response.write () и выводю количество файлов (1) на моем upload.aspx ... все четыре возвращаются с ответом 200 и успешно загружаются. Я попытался добавить Response.Buffer = true в конец моей Page_Load, но это не имеет значения. Я предполагаю, что это ошибка, связанная с plUpload?   -  person Evan Parsons    schedule 20.06.2013


Ответы (1)


Вам нужно вернуть хоть что-то из админки - OK, DONE или какое-то подтверждение json. У некоторых проигрывателей Flash есть ошибка, из-за которой они не распознают завершение запроса, если с сервера не было возвращено никаких выходных данных. Что касается HTML4, то он просто так работает.

person jayarjo    schedule 21.06.2013