【问题标题】:How would I go about loading a JSON file using Laravel?我将如何使用 Laravel 加载 JSON 文件?
【发布时间】:2015-02-03 03:03:32
【问题描述】:

我有一个我想使用 Laravel 加载的 JSON 文件。我正在学习 Laravel,想知道正确的方法。我在公共文件夹中名为 json 的文件夹中有 JSON 文件。

在我的 routes.php 中,我有以下内容:

Route::get('/json/{jsonfile}', array(
    'as' => 'load-json',
    'uses' => 'JSONController@loadJSON'
));

在 JSONController 我有:

public function loadJSON($jsonfile) {
    // not sure what to do here

    return View::make('json.display')
                ->with('jsonfile', $jsonfile);
}

我的命名约定也可以吗?或者您有更好的建议吗?

【问题讨论】:

    标签: json laravel


    【解决方案1】:

    在允许用户输入数据来决定读取和写入哪些文件时,请务必小心。这是一个简单的代码,它将接受文件名并在应用程序/存储/json文件夹中查找。我不太熟悉 Illuminate 为防止系统注入所做的工作,但您可能至少要确保“文件名”不包含任何内容,但带有验证器的字母数字字符。

    除非 JSON(或任何文件)需要公开,否则不应将其保存在 public 文件夹中。这样,他们必须通过您的应用程序(和权限)才能查看它。您还可以在公用文件夹之外拥有更多限制性权限。

    public function loadJSON($filename) {
        $path = storage_path() . "/json/${filename}.json"; // ie: /var/www/laravel/app/storage/json/filename.json
        if (!File::exists($path)) {
            throw new Exception("Invalid File");
        }
    
        $file = File::get($path); // string
    
        // Verify Validate JSON?
    
        // Your other Stuff
    
    }
    

    【讨论】:

    • File::get() 对我不起作用。我让它与 URL::asset();你知道这是为什么吗?
    • 您遇到了什么错误?仅供参考, URL:asset 之所以起作用,是因为它将其视为公共 url 而不是从文件系统中读取它。根据这些文件的性质,您可能不想将它们放在您的公共目录中。
    • 从存储路径C:\XAMPP\htdocs\project\app\storage/json/hi.json获取斜杠
    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 2017-12-07
    • 2021-03-05
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多