2014-11-01 3 views
0

Я хочу загрузить файл excel при отправке формы через AJAX POST, однако я не получаю приглашение сохранить файл при использовании метода Dancers send_file.Загрузить файл excel в Dancer - jQuery AJAX

Пожалуйста, смотрите ниже:

Маршрут:

post '/:date' => sub { 
     my $report_date = param('date'); 
     my $data = param('stuff'); 
     my $rep = $report->build($report_date, $data); 
     return send_file("reports/$rep", content_type => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
}; 

метод build в этом маршруте возвращает имя файла после его создания. Запрос AJAX выглядит как:

$('#report').submit(function(event){ 
     event.preventDefault(); 
     $.ajax({ 
      'url': $(this).attr('action'), 
      'type': 'POST', 
      'data': {stuff: ...}, 
      'success': function(res){ 
       console.log(res); 
     } 
    }); 

выше console.log не возвращает ничего, однако в ответ я получаю, кажется, хорошо, с содержимым файла Excel, однако не подсказка:

Connection:Keep-Alive 
Content-Disposition:attachment; filename="10-2014_1414869186.xlsx" 
Content-Length:7161 
Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 
Date:Sat, 01 Nov 2014 19:13:06 GMT 
Keep-Alive:timeout=5, max=100 

Возможно, мне нужно что-то сделать в ответе на успех AJAX? Если да, я не знаю, что.

бы признателен помочь

+0

Do браузеры не отображать всплывающее окно для сохранения по запросу Ajax? – a7omiton

+0

^Да, это так. в этом случае мне придется реструктурировать мою просьбу. – a7omiton

ответ

0

Браузеры не подскажете диалог сохранения, если вы отправить/получить содержимое файла с помощью AJAX, по крайней мере, это то, что я нашел (если вы не можете сделать что-то в ответ на успех в AJAX запрос).

Это означает, что единственное, что нужно сделать, это перенаправление на другой URL

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