2013-03-30 2 views
-2

모든 이미지를 저장하는 S3 계정이 있습니다.다운로드 Amazon S3 PHP 스크립트에 저장된 이미지

mysite.s3.amazonaws.com/imagename.JPG 

이 URL은 제한된 사용자로 업로드됩니다. 이 비밀 이미지의 다운로드 URL을 만들어야합니다. 이 다운로드 URL은 업로드 된 사용자 만 사용할 수 있습니다.

어떻게 PHP로 이미지 파일을 안전하게 다운로드 할 수있는 코드를 작성할 수 있습니까?

는 URL의 모양을 수 있음 같은 이미지 파일을

<a href="download.php?filename='imagename.JPG'>Download</a> 

Download.php

<?php 

    $filename ="http://mysite.s3.amazonaws.com/" . $_GET["filename"]; 
    $buffer = file_get_contents($filename); 
    header("Content-Type: application/force-download"); 
    header("Content-Type: application/octet-stream"); 
    header("Content-Type: application/download"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Content-Type: application/octet-stream"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: " . strlen($buffer)); 
    header("Content-Disposition: attachment; filename=$filename"); 
    echo $buffer; 
?> 
+0

귀하의 노력은 어디입니까? 아니면 혼자서하려고하지 않았습니까? –

답변

1

당신은 (단순한 데이터베이스 테이블을 설계 할 수 있습니다 또는 구성을 다운로드 할 수 mysite.com/restrictedimage.php?mid=xyztokens234

+0

고마워,이 코드는 쓸모가 없어. D – SSK

0

사용이 코드 파일)에서 토큰과 보호 된 URL 간의 상관 관계를 기록한 다음 restrictedimage.php 스크립트에서 토큰을 확인하고 사용자를 실제 링크.

URL을 보관하려면 주기적으로 서버의 이미지를 다운로드하고 캐시하여 리디렉션 대신 이미지를 직접 출력해야합니다. 당신이 진짜을 숨기려하지 않는 경우 retrieveUrlFromToken 단순히 식별 기능이 될 수

$token = isSet($_GET['mid'])?$_GET['mid']:null; 
if(!$token) die("No token"); 
$realURL = retrieveUrlFromToken($token); 
if(!$realURL) die("Invalid token"); 
$file = file_get_contents("http://mysite.s3.amazonaws.com/".$realURL); 
header("Content-Type: application/force-download"); 
header("Content-Length: " . strlen($file)); 
header("Content-Transfer-Encoding: binary"); 
echo $file; 

공지 것을 : 옵션 2

$token = isSet($_GET['mid'])?$_GET['mid']:null; 
if(!$token) die("No token"); 
$realURL = retrieveUrlFromToken($token); 
if(!$realURL) die("Invalid token"); 
header("Location: http://mysite.s3.amazonaws.com/" . $realURL); 

예제 코드 : 옵션 1

예제 코드 경로,하지만 난 당신이 더 나은 일을 제안, 그렇지 않으면 전체 스크립트 쓸모가있다.