์๋
ํ์ธ์. ์ด ํ๋ฅญํ ๋ฒ๋ค์ ์ถํํฉ๋๋ค.
ํ์ผ์ ์์คํ
๊ฒฝ๋ก๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋ฌ์ฑํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?
์ง๊ธ ๋ด๊ฐ ํ ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋จผ์ ๋ค์์ ์ฌ์ฉํ์ฌ ๋ก๋ํ ๋ File ์ธ์คํด์ค๋ฅผ ์ฃผ์
ํฉ๋๋ค.
vich_uploader:
db_driver: orm
mappings:
data_files:
inject_on_load: true
๊ทธ๋ฐ ๋ค์ ๋ด ์ปจํธ๋กค๋ฌ์์ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
$file = $entity->getDocFile();
์ต์ ์ ์ ๊ทผ ๋ฐฉ์์ ๋๊น?
์๋จ. ๊ทธ๋ฆฌ๊ณ ์ฌ์ค, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌ์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์ ๋ํ "์ต์ ์ ์ ๊ทผ ๋ฐฉ์"์ด ์์ต๋๋ค.
์ด ๋ฒ๋ค์ FileSystem
์คํ ๋ฆฌ์ง ์์ง์ ํตํด ๋ก์ปฌ ํ์ผ ์์คํ
์์ ์๋ํ์ง๋ง Gaufrette ๋๋ Flysystem์ ์ฌ์ฉํ์ฌ ๋ฉ๋ฆฌ ๋จ์ด์ง ํ์ผ ์์คํ
์์๋ ์๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ฆฌ ๋จ์ด์ง ํ์ผ ์์คํ
์ ๋ํ "์์คํ
๊ฒฝ๋ก"๋ฅผ ๊ฒ์ํ ์ ์์ผ๋ฏ๋ก ์ด ๋ฒ๋ค์ ์ด ๊ธฐ๋ฅ๋ ์ ๊ณตํ์ง ์์ต๋๋ค.
์คํ ๋ฆฌ์ง ์์คํ ์ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ป์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
์ ๊ฒฝ์ฐ์๋ ๋๊ธฐ์ด์ ํตํด ๋ค๋ฅธ ์๋ฒ๋ก ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๋ฌํฉ๋๋ค. ๋ค๋ฅธ ์๋ฒ์์ ์ ๋ก๋๋ ํ์ผ์ ์ผ๋ถ ์ฌํ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ณ ์ถ์ต๋๋ค. ์ด๋ค ํ์ผ ์์คํ ์ ์ฌ์ฉํ๊ณ ์๋์ง ์ด๋ฏธ ์๊ณ ์์ง๋ง(์ ๊ฒฝ์ฐ์๋ S3์ ์ฐ๊ฒฐํ๋ Gaufrette) ๋๋ ํฐ๋ฆฌ์ ํ์ผ ์ด๋ฆ์ ์์์ผ ํฉ๋๋ค.
ํ์ฌ ํ์ผ์ URL์ ๊ฒ์ํ ๋ค์ uri_prefix๋ฅผ ์ ๊ฑฐํ๊ณ ์์ง๋ง ํ์คํ ์ด๊ฒ์ด "์ฌ๋ฐ๋ฅธ" ๋ฐฉ๋ฒ์ด ๋ ์๋ ์์ต๋๋ค.
ํ์ผ ์์คํ
์ ๋ํ ์๋ ๊ฒฝ๋ก๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ฏ๋ก ์ํฐํฐ๋ฅผ ํตํด ์ก์ธ์คํ ์ ์์ต๋๋ค. ( ์ ์์ getImageName()
)
๋ด ๋์, ๋๋ ํ ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ง ์์ต๋๋ค. ์ ์ฅ ์๋น์ค( vich_uploader.storage
) ๋ฐ resolvePath
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ ์ ์์ต๋๋ค.
"vich_uploader.storage ์๋น์ค๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค...
$downloadHandler์ downloadObject๋ง ์๋ ์ด์ ๋ getPath๊ฐ ์์ด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
"vich_uploader.storage ์๋น์ค๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค...
$downloadHandler์ downloadObject๋ง ์๋ ์ด์ ๋ getPath๊ฐ ์์ด์ผ ํฉ๋๋ค.