Vichuploaderbundle: VichUploader๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์„ Action์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2013๋…„ 02์›” 21์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dustin10/VichUploaderBundle

์ด๊ฒƒ์ด VichUploader์˜ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ VichUploader๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ…œํ”Œ๋ฆฟ์—์„œ๋„ ํŒŒ์ผ ํ•„๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ๋„ˆ๋ฌด ์ข‹๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

์ƒํ™ฉ์€ ์ด๋ฏธ ์„œ๋ฒ„์— ํŒŒ์ผ์ด ์žˆ๊ณ  VichUploader์—์„œ ์ €์žฅํ•˜๊ณ  ์žฌ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ž‘๋™ ์ค‘์ธ ๋‚ด ์ฝ”๋“œ:

use Symfony\Component\HttpFoundation\File\File;
......
class documentController extends Controller {
......
        public function updateAction(Request $request){
                ......
                $form = $this->createForm(new DocumentType(), $doc);  
                ........
                if ($form->isValid()) {
                        $baseDir = $this->get('kernel')->getRootDir() . "/../web/uploads";  

                        $fileThumbnail = new File($baseDir."/image.jpg");  

                        $doc->setImgThumbnail($fileThumbnail->getFilename());

                        $sm = $this->get('vich_uploader.storage');
                        $sm->upload($doc);

                        $em->persist($doc);
                        $em->flush();
                        .......
                } //eof if
        }
}

VichUploader๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์„ ์–‘์‹ ํด๋ž˜์Šค ์—†์ด ์ €์žฅํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€๋งŒ ๋‚ด ๋ฐฉ์‹๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

VichUploader๊ฐ€ ์žˆ๊ณ  Form ์—†์ด ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”,

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@Baachi ์™€ @ftassi๋ณด๋‹ค

@Baachi ๋งž์Šต๋‹ˆ๋‹ค!
UploadedFile ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•ดํ‚น์ด์ง€๋งŒ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์€

$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);

$em->persist($doc);
$em->flush();

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—…๋กœ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋ ค๋ฉด UploadedFile์ด ์—”ํ„ฐํ‹ฐ์— ๋ฐ”์ธ๋”ฉ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋Œ€์‹  File ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ”์ธ๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@ftassi ์†”๋ฃจ์…˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
UploadedFile ํด๋ž˜์Šค์—๋Š” test ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ true ์ด๋ฉด symfony๋Š” ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

@Baachi ์™€ @ftassi๋ณด๋‹ค

@Baachi ๋งž์Šต๋‹ˆ๋‹ค!
UploadedFile ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•ดํ‚น์ด์ง€๋งŒ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์€

$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);

$em->persist($doc);
$em->flush();

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰