2017-05-11 2 views
0

Ich wollte meinen Benutzer-Download-Link senden, wenn ein Benutzer das Produkt kauft. Ich sende den Download-Link per Mail. Also, wenn ich die download link sende, sende ich es durch .. www.xyz.com/images/2343354.jpg Aber ich will ihn nicht die Verzeichnisstruktur wissen lassen. Bedeutet, wenn ein Benutzer versucht, auf das Verzeichnis nach hinten Link /images/2343355 zuzugreifen, er könnte andere Bilder herunterladen, die ich diesem Benutzer nicht geben möchte.
Gibt es eine Möglichkeit, die ich vermeiden kann, indem ich den Benutzer Verzeichnislink zum Download geben?So senden Sie Download-Link Durch Ausblenden des Verzeichnisses

meine Bilder befinden sich im Verzeichnis public/images, da ich eine Laravel-Anwendung gemacht habe.

+0

Wie Benutzer auf Ihr '/ images/2343355'-Verzeichnis zugreifen können, um images.give sichere Berechtigung herunterzuladen – CyberAbhay

+0

Definieren Sie eine separate Route zum Download, die die Verzeichnisstruktur abstrahiert und dann einige Controller-Logik schreiben, um die ID zu übernehmen und entsprechendes Image bereitzustellen –

+0

Gibt es einen Weg, ich könnte es mit RewriteCond innerhalb .htaccess lösen – Hola

Antwort

0

Stellen Sie eine Hash-URL für den Benutzer bereit wie www.xyz.com/download?image=XNS2323NIEYEDUJES Sie müssen den Bildnamen mit zugehörigem Hash-Wert in einer Tabelle speichern. In der Download-Seite erhalten Sie die Bildanforderungsdaten und erhalten den ursprünglichen Bildnamen von db. Und der Make Download mit PHP-Download-Code.

<?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.'; 
    } 
} 

Ich denke, das wird für Sie arbeiten. Danke

0

Erstellen Sie eine JavaScript-Funktion wie diese, die Datei herunterladen wird und Benutzer nicht erfahren werden, welche URL aufgerufen wird.

Hier Probenlösungen, die Sie

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

In diesem Code ein normaler Link ohne href angezeigt wird und downloaden file.Then nach dem Einschalten Klick davon werden Sie nur Dateinamen übergeben versuchen können und Datei wird Downloaded dann, wenn Benutzer über den Link schwebt, wird kein Pfad angezeigt.

Hier ist der Dateiname bei einem Klick ('Dateiname') jedes Mal dynamisch und der Verzeichnispfad ist in Ihrem Skript statisch.

Versuchen Sie es einmal.

Verwandte Themen