-2

すべての画像を保存するための S3 アカウントがあります。

mysite.s3.amazonaws.com/imagename.JPG

この URL は秘密です。ここで、私は制限されたユーザーをアップロードしています。このシークレット イメージのダウンロード URL を作成する必要があります。このダウンロード URL は、アップロードされたユーザーのみが利用できます。

画像ファイルを安全にダウンロードするためにphpでコードを書く方法。

URL は次のようになります。mysite.com/restrictedimage.php?mid=xyztokens234

4

2 に答える 2

1

トークンと保護された URL の間の相関関係を記録する単純なデータベース テーブル (または構成ファイル) を設計できます。次に、restrictedimage.php スクリプトでトークンを確認し、ユーザーを実際のリンクにリダイレクトするだけです。

代わりに、URL を秘密にしたい場合は、定期的に画像をダウンロードしてサーバーにキャッシュし、リダイレクトの代わりに画像を直接出力する必要があります。

オプション 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); 

オプション 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;

retrieveUrlFromToken実際のパスを隠したくない場合は、単にアイデンティティ関数である可能性があることに注意してください。しかし、もっと良いことをすることをお勧めします。そうしないと、スクリプト全体が役に立たなくなります。

于 2013-03-30T11:48:37.833 に答える
0

このコードを使用して画像ファイルをダウンロードします

<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; 
?>
于 2013-03-30T11:44:04.110 に答える