제목 | ci4 첨부파일의 업로드 경로 | ||
---|---|---|---|
카테고리 | CI 4 관련 | ||
글쓴이 | 노정호 | 작성시각 | 2020/11/27 16:55:02 |
|
|||
안녕하세요. ci4로 개발 공부하고 있습니다. 이미지 파일을 업로드하는 것까지는 성공을 했는데, 이미지를 view에서 어떻게 노출시켜야 할지 고민입니다. 이미지의 저장경로는 writable/uploads/blog 이고, 웹에서 접근가능한 위치가 아닙니다. 가장 ci적인 해결방법이 무엇인지 질문드립니다.
아래는 controller public function create() { $model = new BlogModel(); helper('text'); if ($this->request->getMethod() === 'post' && $this->validate([ 'bl_title' => 'required|min_length[3]|max_length[255]', 'bl_text' => 'required', ])) { # 블로그DB 저장 $model->save([ 'bl_title' => $this->request->getPost('bl_title'), 'bl_text' => $this->request->getPost('bl_text'), 'bl_regdate' => date("Y-m-d H:i:s"), ]); $insertId = $model->getInsertID(); $data['title'] = "블로그 작성"; $data['refresh'] = "/blog/view/" . $insertId; # 첨부파일 처리 $file = $this->request->getFile('bl_file'); //print_r($file); return; if($file->isValid() && ! $file->hasMoved()) { //$newName = sprintf("s", $insertId) . "-" . random_string('alnum', 7) . "." . $file->getExtension(); $newName = $file->getRandomName(); $file->store('blog/', $newName); $model->save([ 'bl_idx' => $insertId, 'bl_file' => base64_encode(serialize(['origin' => $file->getClientName(), 'save' => 'blog/'.$newName])), ]); } echo view('templates/noheader', $data); echo view('blog/success', $data); echo view('templates/nofooter'), $data; } else { echo view('templates/header', ['title' => '블로그 작성']); echo view('blog/create'); echo view('templates/footer'); } }
|
|||
다음글 | Ci3( custom_result_object() ) (2) | ||
이전글 | CI4 unit test (2) | ||
빛그림
/
2020/11/27 16:57:37 /
추천
0
|
PureAni
/
2020/11/27 17:07:58 /
추천
0
티스토리처럼 URL을 부르면 file controller 에서 해당 파일의 값을 넘겨주는 방법도 있습니다. 아니면 처음부터 uploads 에 올리는것도 방법입니다. |
한대승(불의회상)
/
2020/11/27 17:28:50 /
추천
0
linux라면 디렉토리를 마운트하는 방법도 있습니다. |
노정호
/
2020/11/27 17:35:42 /
추천
0
답변 감사드립니다. 공부하는 단계이므로 가장 간단해보이는 심볼릭 링크로 해결하였습니다. $ cd public $ ln -s ../writable/uploads .
|
노정호
/
2020/11/27 17:38:56 /
추천
0
// 이미지 출력은 이렇게 하니 잘 나오네요.
// $bl_file['save'] = "blog/file_name.jpg" <img src="<?= base_url('/uploads/' . $bl_file['save'])?>" alt=""> |
테러보이
/
2020/11/27 17:56:07 /
추천
0
저희 같은경우는 저장파일 경로는 따로 도메인 잡고 해당 도메인에서 php가 작동되지 않게 한다음 불러다 씁니다.
예> 도메인: example.com 파일: file.example.com |
public 안에 uploads를 심볼릭 링크로 연결해 주시면 됩니다.
또 다른 방법으로는 라우터 설정을 하는 방법도 있고요.