2014-12-05 5 views
1

Laravel을 사용하여로드하려는 JSON 파일이 있습니다. 나는 Laravel을 배우고 있으며 이것을 할 올바른 방법을 알고 싶습니다. JSON 파일은 공용 폴더의 json이라는 폴더에 있습니다. 나는 다음과 같은 한 내 routes.php에서Laravel을 사용하여 JSON 파일을로드하는 방법은 무엇입니까?

는 :

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

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

이 또한 확인 내 이름 지정 규칙 또는 당신이 더 나은 제안이 수행 JSONController에서

Route::get('/json/{jsonfile}', array(
    'as' => 'load-json', 
    'uses' => '[email protected]' 
)); 

나는이?

답변

6

사용자가 입력 한 데이터가 읽고 쓸 파일을 결정할 때 항상주의해야합니다. 파일 이름을 취하고 apps/storage/json 폴더를 볼 간단한 코드가 있습니다. 필자는 Illuminate이 시스템 주입을 막기 위해하는 일에 익숙하지 않지만 "filename"에 유효성 검사기가있는 영숫자 이외의 문자가 포함되지 않도록 할 수 있습니다.

JSON (또는 파일)을 공개해야하는 경우가 아니면 공용 폴더에 보관하지 않아야합니다. 이렇게하면 앱을보기 위해 앱과 권한을 거쳐야합니다. 또한 공용 폴더 외부에서보다 제한적인 사용 권한을 가질 수 있습니다.

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 

} 
+0

File :: get()이 작동하지 않습니다. 나는 URL :: asset(); 이것이 왜 있는지 아십니까? – rotaercz

+0

어떤 오류가 발생 했습니까? 그 이유는 URL : asset works가 공개 URL로 취급하고 있기 때문입니다. 이 파일의 특성에 따라 공용 디렉토리에 파일을 넣지 않을 수도 있습니다. – TheDPQ

+0

저장 경로'C : \ XAMPP \ htdocs \ project \ app \ storage/json/hi.json'에서 슬래시를 gettting합니다. – 151291

관련 문제