### app binding : xe.storage 으로 바인딩 되어 있음
Storage Facade 로 접근이 가능
### 파일 저장
업로드된 파일을 저장하는 경우 Request 에서 반환하는
Symfony\Component\HttpFoundation\File\UploadedFile 객체를 전달 해야 합니다.
php
$uploadFile = Input::file('file');
Storage::upload($uploadFile, 'dir/path');
업로드 되는 파일의 이름을 별도로 지정하고 싶은 경우 3번째 인자로
지정하고 싶은 이름을 넣어 주면 됩니다.
php
Storage::upload($uploadFile, 'dir/path', 'new_name');
저장되는 저장소를 지정하고 싶은 경우 4번째 인자로
config 에 설정된 저장소 중 하나를 함께 전달 하면 됩니다.
php
Storage::upload($uploadFile, 'dir/path', 'new_name', 's3');
file content 를 직접 저장시킬 수 도 있습니다.
이때는 create 메서드를 사용합니다.
$content = file_get_content('path/to/file');
Storage::create($content, 'dir/path', 'filename');
또한 create 메서드를 통해 부모 자식관계를 형성할 수 있습니다.
이때는 5번째 인자로 부모에 해당하는 파일의 아이디를 전달하면 됩니다.
php
Storage::create($content, 'dir/path', 'filename', null, 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
### 다운로드
다운로드 시에는 download 메서드에 파일객체를 전달하면 됩니다.
이때 다운로드 되는 파일명을 변경하고자 하는 경우 변경할 이름도 함께 전달해야합니다.
Storage::download($file, 'new_filename');
### 연결
Storage 는 특정 대상이 파일을 소유하는 형태가 아닌
파일을 특정대상과 연결하는 방식으로 제공 됩니다.
특정 대상으로 부터 파일 업로드 후 연결 처리를 하기위해 다음과 같이 사용해야 합니다.
php
$uploadFile = Input::file('file');
$file = Storage::upload($file, 'dir/path');
Storage::bind('target id', $file);
연결을 끊는 동작은 unBind를 이용합니다.
php
Storage::unBind('target id', $file);
이때 파일에 연결된 대상이 더이상 존재하지 않는 경우 삭제를 원한다면
삭제처리를 하도록 추가 정보를 전달합니다.
php
Storage::unBind('target id', $file, true);