2015-10-26 2 views
0

Я вызываю MVC ActionResult для создания .ZIP отчетов. Этот ActionResult украшен [HttpPost] и возвращает объекту FilePathResult.Controller.File клиенту.Отправить HTTP-форму второй раз без отмены первого Отправить

Само по себе реализация .ZIP работает отлично, но теперь мне нужно отправить второй независимый файл, который нельзя включить в первый .ZIP.

Файл .ZIP: всегда загружен клиентским браузером. Второй файл, PDF, загружается условно.

Независимо, мое кодирование отлично работает, но они не будут работать вместе, так как мой второй HTTP POST, кажется, отменяет первый.

The JQuery:

$('#btnDownloadReports li a').click(function (event) { 

    event.preventDefault; 

    $(this).parents("form") 
     .attr("method", "POST") 
     .attr("action", "/MyController/MyOutputZIP/?selectionId=" + $('#SelectionId').val()) 
     .submit(); 

    if ($(this).data('reporttype') == 'pdf') { 
     $(this).parents("form") 
      .attr("method", "POST") 
      .attr("action", "/MyController/MyOutputPDF/?selectionId=" + $('#SelectionId').val()) 
      .submit(); 
    } 

    return false; 
} 

Я вижу SO post, что может дать подсказку, но я не уверен, как применять его в моем случае.

Может ли кто-нибудь указать мне, как выполнить второй триггер HTTP POST после завершения первого HTTP-POST?

ответ

2

Вместо того, что по сути является взломом, почему бы не переместить логику на стороне сервера и не решить, сколько и какие файлы вам отправить? Учтите, что что-либо на стороне клиента может быть злонамеренно изменено.

После того, как на стороне сервера, у вас есть два различных варианта:

  • нескольких частей документов, а просто вернуть эти два файла в том же потоке.
  • Пойдите в старую школу и просто заархивируйте документы вместе, если необходимо (иначе верните только один документ, который был распакован).
+0

Я знаю, что ты прав. Сайт закрыт, но я бы скорее вернул несколько документов из моего одного MVC ActionResult. Я использую объект ASP.NET MVC 'FilePathResult.Controller.File'. Знаете ли вы, можно ли использовать его для возврата многокомпонентного документа? Возможно, я неправильно понял, но мне показалось, что я видел, что только один документ может быть возвращен по запросу. Включение этого в .ZIP не является вариантом. Я должен вернуть 2 файла - ZIP и PDF. – rwkiii

+0

Нет, вам нужно написать ответ от руки. Не волнуйтесь, хотя это не слишком сложно, и вы можете найти множество примеров! – Blindy

0

Я сделал что-то подобное некоторое время назад. Мое решение состояло в том, чтобы открыть новое окно с javascript для загрузки дополнительного файла.

конечный пользователь должен «утвердить» сайт для открытия новых окон, хотя, это должно быть только один раз ...

Смежные вопросы