2014-09-24 5 views
2

저는 SLIM 프레임 워크와 PHP로 REST API를 작성하고 있습니다. 디렉토리에서 이미지를로드하고 응답에서 다시 보내려고합니다.응답으로 이미지가있는 RESTfull API를 만들 수 없습니다.

여기 내 코드입니다 :

//Load SLIM-Framework 
include 'api_model.php'; 
require 'Slim/Slim.php'; 
\Slim\Slim::registerAutoloader(); 

$app->get('/image/:supportID/:last_login/:device_token', function ($supportID, $last_login, $device_token) use($app) { 

     $image = file_get_contents("images/Koala.png"); 
     $res = $app->response(); 
     $res->header('Content-type', 'image/png'); 
     $res->header('Content-Disposition', 'inline; filename="Koala.png"'); 
     $res->body($image); 

}); 

//Start the routing per instance 
$app->run(); 

함수에서 매개 변수를 무시하십시오,이 문제가되지 않습니다.

RESTClient (Firefox)로 요청을 테스트하면 이미지가 아닌 다음 응답이 표시됩니다.

‰PNG IHDR5Ø‚ZsRGB®ÎégAMA±üa pHYsÃÃÇo¨dtIMEÙ 07ÛÀ tEXtAuthorCorbis`É;Î tEXtCreationTime2008:02:11 11:32:43~¾j±tEXtSoftwarePaint.NET v3.5.100ôr¡ÿ'IDATx^Lýçs$G–ö‰ö_óîtS•ª Z#µÖZk­R!R Z ´&KW‘UE²§›Ýlj6uË™µµ}mÍî‡]»vï;÷9‘œ¶kæéá*Èßã~ÎñŸÙ5NÝHÀ8áÒRÒúã6Åy§æœ[;fW:µãÝ„S18Ç1hž ˜¦]úq§nÉeœpàvõ#VÍ°Y>¨—õY4ýNó¨Ï4ã5N;4”M?î5M¹µ#nÝUѺœš—fØo™2k†q£ßÊB‰Ó0ê1O¹ŒcvÝ šçлt^ã¬[?kUŽÚµc^óŒÏ:åÐÙÔƒNÝPÐ4éÑ¡‘ã!ˬß8Ìh$ÚŒªý–\w¨Ï»Ô~øÇ4ä7NSný$²ùTÃ^í¸W7m—ÛÅý~é¹ü\PÖŸHÝ‚Ó!Ñù˜|G'珞ßçž÷Î$^ပÕgc÷›gN#YØ}þy¯hØ/÷ŠF™4”†äcA]aÎ'\‚a+oÄ!×Ož1Ìö™9ªñ“’á_ˆG_QÍœÒM÷á£tä5ùØkÈ ~M=qJ3}F6~B:ôºrüU礉;`á˜yçuÓ§3§lì3ú‰×ôS'4ÜsZN¿ž{VÏ:Û»E6ñº|ìÙè/t3çÍœ %[email protected]É=iÙyÓÊñ3’É×5Ü~½à¼†? ‹ÇNȦΈÇO‰&ÎòGO ÆN³‡ß` ½ÎzC0~R0~B4IŃ¢©sâé>ÉôàœE>a ›DãnÏ¢ØØ1—ÈoæblñèýæYŸy2`ƃð¦˜óY¯e_Eü¨Sˆ¸4±cv×2é6ŒøÌÓ!'âäl\Ÿ™°ò=F6Š :Ø!;×ñ¶„ìx¬SQ+êâxŒ£(?â¡´”ŸvЋ´±ÂvnÐÊ Ûù8G† c6é¥üb”@å;xQÏkqèûí¦·yÀc ;81— å“$¼Â°ƒõßi9“>ägEÝ3 /?”§’ˆsçQ÷tÀ:s³Ó>^È:q³ü.J7'æåá òÒ!q:$Å-)éÌEù¨r.¬,Äd™?ÏEdùˆ*í—Ç=ô"ãçGýÜdDž‹«²1U.,N¸gãN~>¨B¶\HUˆ©¨p.¦ÌEi¿4Pd‚ê„GRŒéJq=:[NjsaiÊï$´¸˜ËQN>.ÈE©mF´ ׋q%R>®È†$I?'éá"ÂBL‘ Ë’ae9eÌE„I?­m¬å„®ž3µòº|HZ©‹aM=m,ǔŨ´‘"’jÖ´P0•“jt™r6¤¹¨(æ•Ó‚RR–Jç3ú¹¨•Î'å¤2•£™°(ã—ãÒù¤±œ0å#4©ž7.UÃKó‘媥âÆ·ù˜¨””¢BB]Nk qÍ|ÚTËX Q=œ«æ3êlXðrÑM”PI¨‹qy5m.'õ”¹š0bK M%­Ïh %žž®à#R1‰ôå´ %c5žŠ*DÕ¸q."™OËçS¼K¸ŽTŒ«1VÛJZëxHx.ÿJZ_Ípã\XMO<"AþJÖ€„É?•cêÞS(¥´¥¤®WZ>B'Ù0?åSÒRB•òÉP#¾*&8bШñh[X‰‡‹®¡ýÔN¿0 l>iFÕX¼¥¸ŽÆ`¬ð>Ðë•RJôc…¨®˜n>¦ÇÃ*ŵt17S1ÃËkY}#k¨g4í‚q©dYˆ©s–µ’u)§Ý(›wLë%ÝzѺ^2íVìW—BWÖÓwºÙ»+åG«É7—’ooÎ=Û-<ÝÌ¿³Sz¾[ü÷£ú®µ>¼Úþíqýƒ‹?^ï~tcéã[+Hº±úû«Ýß_]üôöÆgw×?¿¿ùùƒõ¯ì|õhÿó‡_=<úâÁ®|ùd÷϶>¹¿öÙýµïÞÙýúùîgV>{´ôéã¥?=hò¨óç«_¼ÝùèÞ‡ç?{ÒøüEóó+Ÿ¾½ýåó/žnþéñöW/ÿü«ËŸ<ÙÿýýÝì}xÿ÷ÿt÷ð7×·w{÷ƒë›¿¾²òÁõõ___ýåÕíÇÖoï/ÝÝ]º¿Ý|´Y~²W»º;e½t}»|}«r´”;heŽ–ò‹éjx¥ì]+{–ʮժ·[puŠÖ朾Ó4Ò–FÞR˘Ê9ÍbQ¿P1”r’vU¹ÜÕÕÛ’FCº²nZݲ,o˜:«ú¥Óú¦}mÃÖîZ–W\¦¡º m¶¬µŠ>Ÿ“—º…²¥š3âUÁL¥a âã墒|BRÌÊÉ|FZÉJJòFQÙΫ›%E§ÄïÎÏ®VYk5ö^·4Ï[«röZÒÍ:o­4»Va/9¥<·œ6óªJNYžSf£Ât˜ŸŽ‹²iI:)Î&e©¸,‘…}ÂxH”MŠ1A"*CÂE¤DD˜ˆðqË¢!1¥07‚ÿ~ e*¦Œáï1ÎÎe¤sm2¡Ê&5‰ˆ<“TU –bÆ”©bE.¥ÅßWÒ+ÍÅÕs uÂ/Šâ?aT‘‹é£nA2ÈÉFy‰0ïv6¦É¦Ô~7/Sç’š—psãq4(‹¤Ñ $‘¢^$œ'"êhP‘)ÒqM<&G“âa8ÀxyÌ·rjpPýnÈ+H'pE€ úï§Å?á¹´}.nØ/B÷CLò¹øa¿e"¡R|ô»Eè)îg1%*$•ãJÈ7öáII.AØ+Ž•©ˆÆãà"…<è©<ìS=²°Wô("^UÔ§{åèZ4Ä 

내가 뭘 잘못하고 있니?

+0

영어로 질문해도 괜찮습니까? –

+0

SO의 언어가 독일어가 아니기 때문에이 질문은 주제와는 거리가 먼 것처럼 보입니다. – HpTerm

+0

죄송합니다. 여기 새로 = =) – user3613586

답변

0

내가하는 일은 다음과 같습니다. PNG 파일은 64 진법으로 인코딩되어 있으므로 JPG/GIF는 필요하지 않습니다. 대부분의 경우보기 부분을 무시하지만 false 인 경우 다운로드가 실행됩니다.

$filename = "images/Koala.png"; 
// this is apparently not necessary 
// $imageData = base64_encode(file_get_contents($filename)); 

$view = $app->request->get('view'); 

$res = $app->response(); 
$res['Content-Description'] = 'File Transfer'; 
$res['Content-Type'] = mime_content_type($filename); 
$res['Content-Disposition'] = ((!$view)? 'attachment; ': '').'filename='.basename($filename); 
$res['Content-Transfer-Encoding'] = 'base64'; 
$res['Content-Length'] = filesize($filename); 

readfile($filename); 
+0

예.이 질문은 1 년 전의 문제이지만, 답변을 얻지 못했고 Google 검색 결과가 높습니다. –

관련 문제