前提・実現したいこと
Laravel5.5を使用し、業務管理システムを作成しております。
その中でCSVファイルのテンプレートファイルをダウンロードする機能がありますが、
Windowsのみファイルに拡張子が表示されない問題が発生しております。
Chrome側の設定やwin側の設定を疑いましたが、
改善されないためプログラムに問題があるのではないかという結果に至り質問させていただきます。
win側もダウンロードしたファイルに初めから拡張子を表示させる方法などございましたらご教授いただけると幸いでございます。
発生している問題・エラーメッセージ
「file.csv」MacのChromeではこのように出力されるが、
「file」WindowsのChromeではダウンロードファイルに拡張子が表示されません。
該当のソースコード
Controllersとresourcesの情報です。
PHP
1public function file(){ 2 # CSV出力 3 $response = [ 4 'Content-type' => 'text/csv', 5 'Cache-Control' => 'must-revalidate, no-cache', 6 'Expires' => '0', 7 ]; 8 $callback = function(){ 9 $headers = [ 10 '処理 削除:1 その他:空白', 11 '種別ID', 12 'コード', 13 '名称', 14 ]; 15 16 $config = new ExporterConfig(); 17 $config 18 ->setDelimiter(',') // 区切り文字 19 ->setEnclosure('"') // 囲み文字 20 ->setEscape('\') // エスケープ文字 21 ->setToCharset('SJIS-win') // 出力ファイルの文字コード 22 ->setFromCharset('UTF-8') // 読み込み元の文字コード 23 ->setColumnHeaders($headers); // CSVの1列目のヘッダー行 24 $exporter = new Exporter($config); 25 $exporter->export('php://output', []); 26 }; 27 28 return response()->stream($callback, 200, $response); 29 }
PHP
1 <form method="POST" action="{{ url("/naire-admin/import/consts/save") }}" enctype="multipart/form-data"> 2 <table class="data-search w700"> 3 <tr> 4 <th class="w25p">CSVファイル</th> 5 <td > 6 @php $form_name="upload_file" @endphp 7 <input type="file" name="{{$form_name}}" class="w95p"> 8 </td> 9 </tr> 10 </table> 11 <div class="w700 tcenter mt20 mb20"> 12 {{ csrf_field() }} 13 <button type="submit" class="w100">アップロード</button> 14 <a href="{{ url("/naire-admin/import/consts/file") }}"> 15 <button type="button" class="w125">CSVフォーマット(この部分です)</button> 16 </a> 17 </div> 18 </form>
試したこと
初歩的なことになりますがwindows側の設定(拡張子の表示がOFFになっているか)
ファイルに「.csv」を付与させて、excelなどで確認し出力ファイルに問題ないか確認済みです
不足しているソースなどございましたらアップします。
どうぞよろしくお願いします。
補足情報(FW/ツールのバージョンなど)
■検証、テスト用ハードウェア(検証端末)
開発環境:MAMP
PHP:7.2.7
Laravel5.5
OS:MacOS10.14.6(Mojave)
ブラウザ:Chrome79.0.3945.117
確認画面
OS:Windows10
ブラウザ:Chrome79.0.3945.117
回答3件
あなたの回答
tips
プレビュー