ユーザーがフォームデータを選択して送信ボタンをクリックするだけで、データを取得した後にデータがデータベースから取得され、データが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);
}
}
laravelのコアコーディングを使用してください。laravelのこのパッケージを使用してください: - https://github.com/Maatwebsite/Laravel-Excel – kunal