У меня проблема с получением файла для загрузки на моем рабочем сервере. Использование разных браузеров дает одинаковые результаты, успех на тестовом сервере, загрузка в виде файла без изменения текущей страницы. На рабочем сервере, однако, он просто открывает новую вкладку и отображает CSV в виде текста на странице. Я могу только понять, что это связано с сервером (Nginx). Могу ли я изменить серверный блок для обеспечения правильного поведения.
Javascript Код на стороне клиента
window.open('myfile.csv');
Laravel код контроллера
protected function download(){
$filename=$_GET["filename"];
//return response()->download(public_path()."/downloads".$filename);
$fileContent = file_get_contents($filename);
$response = response($fileContent, 200, [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment; filename="'.$filename.'"',
]);
return $response;
}
Заголовки ответа:
Тестовый сервер
Accept-Ranges: bytes
Connection: keep-alive
Content-Length: 318
Content-Type: application/octet-stream
Date: Mon, 27 Apr 2020 16:29:06 GMT
ETag: "5ea70851-13e"
Last-Modified: Mon, 27 Apr 2020 16:29:05 GMT
Server: nginx/1.16.1
Производственный сервер
Cache-Control: no-cache
Cache-Control: no-cache
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/plain
Date: Mon, 27 Apr 2020 16:32:00 GMT
ETag: W/"5ea70900-13e"
Expires: Mon, 27 Apr 2020 16:31:59 GMT
Last-Modified: Mon, 27 Apr 2020 16:32:00 GMT
Server: nginx/1.8.0
Transfer-Encoding: chunked
У меня есть только контроль блок виртуального сервера на производстве. Для подтверждения, следуя нескольким полезным постам - код РАБОТАЕТ на тестовом сервере и во всех браузерах, НЕ РАБОТАЕТ на рабочем сервере и во всех браузерах.