2017-06-03 3 views
0

ユーザーがフォームデータを選択して送信ボタンをクリックするだけで、データを取得した後にデータがデータベースから取得され、データがCSVファイルに挿入され、そのファイルが存在しなければならないという作業を達成しようとしています。そのファイルをアプリケーションのどこにでも保存することなく、ユーザーのブラウザに直接ダウンロードできます。 laravelでは、アプリケーションのパスに保存することなく、ユーザーのブラウザに直接CSVファイルをダウンロードできますか?私たちはlaravel 5.4でアプリケーションに保存せずにファイルをダウンロードできますか?

私のフォームは、次のとおりです。

<form id="statistics" method="post" action="{{ action('[email protected]') }}""> 
<div class="form-group"> 
    <label><input type="checkbox" value="option1" name="option1">option1</label> 
</div> 
<div class="form-group"> 
    <label><input type="checkbox" value="option2" name="option2">option2</label> 
</div> 
<div class="form-group"> 
    <button type="submit" id="process" class="btn btn-primary submit">Run Report</button> 
</div> 
</form> 

MyController /店舗方法:添付ファイル:

public function store(Request $request) { 
    $results = DB::table('table1') 
       ->leftjoin('table2 AS s') 
       ->get()->toArray(); 
    $count = count($results); 
    if($count > 0) 
    { 
    $CsvData=array('column1,column2,column3');   
    foreach($results as $value){    
     $CsvData[]=$value->column1.','.$value->column2.', '.$value->column3; 
    } 
    $filename = 'file_name.csv'; 
    $file_path=base_path().'/'.$filename; 
    $file = fopen($file_path,"w+"); 
    foreach ($CsvData as $exp_data){ 
     fputcsv($file,explode(',',$exp_data)); 
    } 
    fclose($file); 
    $headers = ['Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', 
        'Content-Type' => 'application/csv', 
        'Content-Disposition' => 'attachment; filename='.$filename, 
        'Content-transfer-encoding: binary\n']; 
    return Response::download($file_path, $filename, $headers); 
    } 
} 
+0

laravelのコアコーディングを使用してください。laravelのこのパッケージを使用してください: - https://github.com/Maatwebsite/Laravel-Excel – kunal

答えて

0

はいあなたは、コンテンツタイプとして適切なヘッダとそれをエコーcsvファイルの内容を作成した後にそれを行うことができます。

header( 'Content-type:text/csv'); header( 'Content-Disposition:attachment; filename = "pedidos.csv"');

echo $ shtml;

+0

あなたの素早い返答をありがとう。私のコードを更新したので、もう一度私の質問をお読みください。 –

関連する問題