John Davidson

Build csv and upload to google drive in php (laravel 5.8)

0 comments
Message:


How do I send a response()->stream() to google drive ? I'm not getting it because this method returns a class and not a file. My question is if I will need to save locally using file_put_contents() so that I can then send it to google drive


public function buildCsv($columns, $content): \Closure
{
return function () use ($columns, $content){
$file = fopen('php://output', 'w');
fputcsv($file, $columns);

foreach ($content as $item) {
fputcsv($file, $item);
}

fclose($file);
};
}

$cb = $this->buildCsv($this->CSVColumns, $csvData);
\Storage::disk('google')->put("csv-test", response()->stream($cb, 200, $headers));


On google drive my file looks like this:



My Answer:
To send a response in Laravel, you can use the `response()` method. Here's an example of how you can send a response in a Laravel controller:

php
public function index()
{
$data = ['message' => 'Hello, World!'];

return response()->json($data);
}


In this example, the `index()` method of a controller returns a JSON response with the message "Hello, World!". You can also return other types of responses such as views, files, or redirects using the `response()` method.

If you want to send a CSV file as a response, you can create the CSV file using the `fputcsv()` function and then return it as a response. Here's an example:

php
public function downloadCsv()
{
$data = [
['Name', 'Email'],
['John Doe', 'john.doe@example.com'],
['Jane Smith', 'jane.smith@example.com'],
];

$file = fopen('php://temp', 'w');
foreach ($data as $row) {
fputcsv($file, $row);
}
rewind($file);

return response(stream_get_contents($file))
->header('Content-Type', 'text/csv')
->header('Content-Disposition', 'attachment; filename="data.csv"');
}


In this example, the `downloadCsv()` method of a controller creates a CSV file with some sample data and returns it as a response with the appropriate headers to trigger a file download in the browser.

Remember to adjust the code according to your specific requirements and file generation logic.

Rate this post

4 of 5 based on 5633 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us