2017-05-11 11 views
0

ユーザーが製品を購入したときに私のユーザーのダウンロードリンクを送ろうとしました。ダウンロードリンクをメールで送信します。だから私がdownload linkを送るとき、私はそれを介してそれを送る。www.xyz.com/images/2343354.jpg しかし、私は彼にディレクトリ構造を知らせたくない。ユーザーがディレクトリにアクセスしようとすると、後で/images/2343355というリンクが表示され、そのユーザーに与えたくない画像がダウンロードされる可能性があります。
ダウンロードするユーザーディレクトリのリンクを与えることで回避できる方法はありますか?送信方法ダウンロードリンクを隠すことによって

私の画像は、laravelアプリケーションを作ったので、public/imagesディレクトリの中にあります。

+0

あなたの '/ images/2343355'ディレクトリにアクセスしてimages.giveに安全なアクセス権を与える方法 – CyberAbhay

+0

ディレクトリ構造を抽象化し、IDを取得してそれぞれのイメージを提供するための別のルートをダウンロード用に定義する –

+0

内部でRewriteCondを使用して解決できる方法はありますか.htaccess – Hola

答えて

0

www.xyz.com/download?image=XNS2323NIEYEDUJESのようにユーザにハッシュURLを提供 関連するハッシュ値を持つイメージ名をテーブルに格納する必要があります。 ダウンロードページで画像リクエストデータを取得し、元の画像名をdbから取得します。 そして、PHPダウンロードコードでダウンロードする。

<?php 
//get original filename with hash name from fb and store in a variable 
if($dboriginalfilename!="")){ 
    $fileName = basename($_GET['file']); 
    $path = set ur path; 
    $filePath = $path.$fileName; 
    if(!empty($fileName) && file_exists($filePath)){ 
     // Define headers 
     header("Cache-Control: public"); 
     header("Content-Description: File Transfer"); 
     header("Content-Disposition: attachment; filename=$fileName"); 
     header("Content-Type: application/zip"); 
     header("Content-Transfer-Encoding: binary"); 
     // Read the file 
     readfile($filePath); 
     exit; 
    } else { 
     echo 'The file does not exist.'; 
    } 
} 

私はこれがうまくいくと思います。ありがとうございます

0

ファイルをダウンロードするこのようなJavaScript関数を作成すると、ユーザーはどのURLが呼び出されているか知ることができません。ここで

はあなたが唯一のファイル名とファイルを渡します。それをクリックするだけで後に通常のリンクは、任意のHREFなしで表示され、file.Thenをダウンロードされます。このコードでは

<a href="" id="yourlinkId" onclick="downloadfile('file');">download</a> 
    <script> 
    function downloadfile(filename){ 
    var file_path = 'host/path/'+filename+'.ext'; 
    var a = document.getElementById('yourlinkId'); //or grab it by tagname etc 
    a.href = file_path; 
    a.download = file_path.substr(file_path.lastIndexOf('/') + 1); 
    document.body.appendChild(a); 
    a.href = '';//remove path after download 
    } 
    </script> 

を試すことができますサンプルソリューションがなるありますダウンロードした後、ユーザーがリンク上にマウスを置くと、パスは表示されません。

オンクリック( 'ファイル名)のファイル名は毎回動的で、ディレクトリパスはスクリプト内で静的です。

これを一度お試しください。

関連する問題