2013-03-30 2 views
-2

J'ai un compte S3 pour stocker toutes les images.Télécharger Image stockée dans le script php Amazon S3

mysite.s3.amazonaws.com/imagename.JPG 

Cette URL est secrète, où je télécharge un utilisateur restreint. Je dois créer l'URL de téléchargement pour cette image secrète. Cette URL de téléchargement est uniquement disponible pour les utilisateurs téléchargés.

Comment je peux écrire du code en php pour télécharger un fichier image en toute sécurité.

Peut être URL ressemblera: mysite.com/restrictedimage.php?mid=xyztokens234

+0

Où est votre effort? Ou vous n'avez pas essayé de le faire vous-même? –

Répondre

1

Vous pouvez concevoir une table de base de données simple (ou configuration fichier) qui enregistre la corrélation entre les jetons et les URL protégées, puis dans votre script restrictedimage.php vous devez simplement vérifier le jeton et rediriger l'utilisateur vers le lien réel. Au lieu de cela, si vous souhaitez que vos URL soient gardées secrètes, vous devez télécharger et mettre en cache les images sur votre serveur et les renvoyer directement à l'image au lieu d'une redirection.

Exemple de code pour l'option 1:

$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); 

Exemple de code pour l'option 2:

$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; 

Notez que retrieveUrlFromToken pourrait être simplement une fonction d'identité, si vous ne voulez pas cacher le vrai chemin, mais je vous suggère de faire quelque chose de mieux, sinon tout le script est inutile.

+0

merci l'homme je l'ai, ce code ne sera pas inutile: D – SSK

0

Utilisez ce code pour télécharger un fichier image

<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; 
?> 
Questions connexes