2015-10-26 7 views
0

Я использую Laravel 5.1.Файл не загружен на Laravel5, используя Response

Ajax вызова JQuery сделан так:

$('#export_selected').click(function(){ 
       var checked = $('.select_rows:checked'); 
       var ids  = []; 
       $.each(checked, function(index, value){ 
        ids.push(value.id); 
       }) 
       $.ajax({ 
        method : "POST", 
        url : "{{URL::to('/spot/exportTable')}}", 
        data : {ids:ids} 
       }); 
      }); 

А затем метод PHP определяется таким образом:

public function exportTable(Request $req) { 
      $spots = array_flatten($req->all()); 
      $res = Spot::whereIn('id', $spots)->get(); 

      Excel::create('Spots', function($excel) use($res) { 
       $excel->setTitle('Title goes here'); 
       $excel->setCreator('Creator Goes Here')->setCompany('Company Goes Here'); 
       $excel->sheet('Excel sheet', function($sheet) use($res) { 
        $sheet->setOrientation('landscape'); 
        $sheet->fromArray($res); 
       }); 
      })->store('csv', storage_path('/exports', true)); 

      $file = base_path() . '/storage/exports/Spots.csv'; 
      $headers = ['Content-Type: application/csv', 'Content Description: File Transfer', 'Cache-Control: must-revalidate, post-check=0, pre-check=0']; 
      return response()->download($file, 'Spots.csv' , $headers); 
    } 

Chrome консоль разработчика печатает результаты в качестве исходных линий.

Файл успешно экспортирован и создан на диске.

Путь к файлу верный.

Но загрузка никогда не запускается.

Повторяя ответ дает:

HTTP/1.0 200 OK 
0:     Content-Type: application/csv 
Cache-Control:  public 
Content-Disposition: attachment; filename="Spots.csv" 
Date:    Mon, 26 Oct 2015 16:08:26 GMT 
Last-Modified:  Mon, 26 Oct 2015 16:08:26 GMT 
1:     Content-Description: File Transfer 
2:     Cache-Control: must-revalidate, post-check=0, pre-check=0 
+1

Удалить '$ headers' от' ответа() -> download() 'и снова тест – manix

+0

@manix просто сделал, ничего не изменил. такой же старый результат и загрузка не запускается. Хотя я не думаю, что это проблема с браузером, но я пробовал это в Chrome, Firefox и IE. – Alucard

+1

Oh! Я понял. Вы не можете скачать через ajax. Пользователь должен открыть/загрузить, отправив запрос, а затем переадресовать/перенаправить весь браузер – manix

ответ

0

Я поставил здесь ответ на все имеющие один и тот же вопрос.

@manix понял это: Я пытаюсь загрузить с помощью Ajax, который должен сделать по-другому, не так, как я написал код

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

  • Нет связанных вопросов^_^