【问题标题】:How to convert json data in json file in Laravel 5.6如何在 Laravel 5.6 中转换 json 文件中的 json 数据
【发布时间】:2019-03-13 01:44:26
【问题描述】:

我需要在文件.json 中转换我的json 数据。我在这段代码中将数据解析为array of json

$movies = Movie::all();
return response()->json($movies);

我需要创建movies.json 文件。我的文件必须在哪里,哪个文件夹?以及如何去做?

【问题讨论】:

  • 你想提供它作为下载,还是只是想在服务器上创建它?
  • 现在,我想在服务器上创建它。
  • 放到公共目录,通过domain.com/movies.json访问
  • @AleksandarMihailovic,请查看我的回答
  • @Koen 当有人去我的路线 /movies.json 我必须制作文件并将文件发送给用户..就是这样

标签: php json laravel


【解决方案1】:

使用

use Illuminate\Support\Facades\Storage;

然后

Storage::disk('public')->put('movies.json', response()->json($movies));

此文件将保存在公共文件夹中

【讨论】:

  • 我是否需要在公用文件夹中创建文件,例如movies.json?
  • 请记住,将敏感数据保存在公用文件夹中可能很危险!
【解决方案2】:

根据你想在服务器上创建文件,也许你可以像这样使用Laravel中的文件存储功能

use Illuminate\Support\Facades\Storage;

$movies = Movie::all();
Storage::put('Movies.json', $movies);
return true;

将来,如果您想将其作为下载提供,您可以创建一个响应宏。我为 HTML 下载做了同样的事情

文件:App\Providers\AppServiceProvider@boot

\Response::macro('attachment', function ($content) {

            $headers = [
                'Content-type' => 'text/json',
                'Content-Disposition' => "attachment; filename='Movies.json'",
            ];

            return \Response::make($content, 200, $headers);

        });

并将其称为

return response()->attachment($movies); //App\Providers\AppServiceProvider

【讨论】:

  • 我是 Laravel 的初学者。我不知道在哪里可以创建 json 文件?在 MoviesController 或其他文件中?
  • @AleksandarMihailovic 您在帖子中分享了一个示例。你能把它放在那个文件里吗?
  • @KoenHollander 如果你有 50000 行怎么办?
【解决方案3】:

在你的web.php

Route::get('/download','MoviesController@downloadJSON')->name('download_movies');

将以下代码粘贴到您的控制器中:

 public function downloadJSON(Request $request){
         $table = Movie::all();
         $filename = "movies.json";
         $handle = fopen($filename, 'w+');
         fputs($handle, $table->toJson(JSON_PRETTY_PRINT));
         fclose($handle);
         $headers = array('Content-type'=> 'application/json');
         return response()->download($filename,'movies.json',$headers);
    }

阅读更多关于Response download

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 2019-02-01
    • 1970-01-01
    • 2021-09-06
    • 2021-08-18
    • 2018-07-29
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多