создать CSV-файл и сохранить его в хранилище и получить ссылку на файл сохранения для отправки по электронной почте в виде вложения в laravel - PullRequest
1 голос
/ 16 апреля 2020

Я хочу создать CSV-файл данных формы при отправке формы. Это будет сохранено в хранилище. Затем получите ссылку на этот CSV-файл. Который отправляется на электронную почту в качестве вложения, а затем пользователь загружает его по этой ссылке. Используя полный laravel стандарт.

Я сделал это так:

if($request->isMethod('post')){
extract($request->all());
$student=array(
    'name'=>request('name'),
    'roll_no'=>request('roll_no'),
    'birth'=>date('Y-m-d',strtotime(request('birth'))),
    'school_name'=>request('school_name')
);
$headers = array(
    "Content-type" => "text/csv",
    "Content-Disposition" => "attachment; filename=student-".$student['name'].".csv",
    "Pragma" => "no-cache",
    "Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
    "Expires" => "0"
);

$columns = array('Name', 'Roll No', 'Birth Date', 'School Name');
$callback = function() use ($student, $columns){
    $file = fopen('php://output', 'w');
    fputcsv($file, $columns);
    fputcsv($file, array($student['name'], $student['roll_no'], $student['birth'], $student['school_name']));
    fclose($file);
}
return Response::stream($callback, 200, $headers);

}

...