[laravel/storage] 업로드된 파일 저장하기

파일스토리지 설정하기

  • 파일 시스템 설정파일위치 config/filesystem.php
  • 설정파일에서 이미지 저장 path, url등을 수정할 수 있다.

Public 디스크

  • public 디스크는 local드라이버를 사용하고 storage/app/public에 저장함.
  • 웹에서 파일을 서빙하려면 public/storage를 storage/app/public으로 심볼릭 링크를 생성해야한다. 아티즌명령으로 심볼릭링크를 생성할 수 있다.
php artisan storage:link

명령을 실행하고 public/storage를 확인하면 심볼링 링크가 생성된걸 확인 할 수 있다. 이제 파일을 업로드하고 처리하는 코드를 작성해보자.

#write.blade.php

<form enctype="multipart/form-data">
    <input type="file" name="file">
</form>
#controller

$request->file('file')->store('images', 'public');

store메소드의 첫번째 인자는 파일이 저장될 폴더명이다. 예제에서는 ‘images’로 지정했기 때문에 /storage/app/public에 images 폴더를 생성한 뒤 파일을 저장한다.
파일명은 자동으로 랜덤한 값이 들어가고 경로와함께 반환된다. 예) images/임의이름.jpg
두번째 인자는 저장에 사용할 디스크를 지정한다.

#view.blade.php // 파일 서빙

{{asset('storage/file.jpg')}}

asset(‘storage/file.jpg’)을 통해서 반환되는 이미지 경로는 mysite.com/storage/images/file.jpg 가 된다.

실제로사용하기

  • 글을저장하는 post테이블, 파일을 저장하는 file테이블이 있다.
  • post모델에 1:다 관계(hasMany)를 지정한다.
  • file모델에는 1:1 관계( belongsTo)를 지정한다.

뷰에서 값을 확인하면 객체를 포함한 배열을 볼수 있다. 아래와 같이 배열의 길이를 확인하고 처리하면된다.

@if(count($post->file))
    {{$post->file[0]->ori_fname}}
@endif

참고

파일스토리지
업로드된 파일 저장하기

[그누보드5]관리자 권한관리 기능추가

문제인식

  • 관리권한설정은 권한을 하나씩 추가해야함
  • 아이디에 부여된 권한을 수정하려면 개별로 수정해야하는 불편함이 있음
  • 여러계정에서 동일한 수준의 권한을 부여하거나 수정하는데 불편함이 있음

해결방안

  • 권한그룹을 생성하고 아이디에 권한그룹을 부여
  • 권한그룹을 수정하면 권한이 설정된 계정들은 별도의 수정없이 변경된 권한적용

그누보드 인증기능을 그대로 유지하면서 권한그룹부분을 추가하였기 때문에 권한을 부여하였더라도 소스코드에 $is_admin == ‘super’ 로 인증하는 부분은 접근이 불가능합니다.

권한그룹관리 페이지
회원관리페이지(권한그룹 지정)

소스는 이전에 작성한 ‘[그누보드5] 관리자에 게시판관리 기능추가’에서 추가 하였습니다.

https://blog.ujsstudio.com/?p=214

설치방법
https://github.com/jisung87kr/gnuboard-yjs
위 주소에서 파일 클론하거나 다운로드받아 그누보드 설치하듯이 사용하면 됩니다.

* 권한부분은 민감하기 때문에 사용하시는 분들은 문제가 없는지 확인하시고 사용하시기 바랍니다. 해당 파일 사용으로 인한 어떤 문제도 책임지지 않습니다.