2016-04-20 2 views
0

ich bin neu in Laravel 5.2, möchte ich nur fragen, wie Sie einen Link, der von uploads kam wie folgt fangen: http://sitename.com/uploads/59128.txt? Ich möchte sie auf die Anmeldeseite umleiten, wenn sie versuchen, auf eine Route oder einen Link von uploads/{any filename} zuzugreifen.Wie fängt man einen Link, der vom Upload/in Laravel 5 kommt?

+0

Klären Sie die Frage! Meinst du, du willst Links zu Dateien in einem bestimmten Ordner abfangen? Ist die Datei in Ihrem öffentlichen Ordner vorhanden? Entsprechen Ihre Dateien dem Muster '' '/ uploads/*. Txt'''? – BeS

Antwort

0

@xerwudjohn einfach können Sie nicht. Wenn diese Datei in den öffentlichen Ordnern, jeder es whitout angemeldet zugreifen können werden Eine Methode, die ich für einige Minuten versucht, eine neue Route erstellen:.

Route::group(['middleware' => ['web', 'auth']], function() { 
    Route::get('/download/{id}', '[email protected]'); 
}); 

die Funktion Showfile im

DonwloadController erstellen
public function showFile($id) 
{ 
    return redirect('/image/'.$id.'.txt'); 
} 

oder verwenden Sie ein Model, um uniqueIds aus einer beliebigen Tabelle zu lesen und den Realfile-Namen zu erhalten. Prost

1

Ja Sie Ihre Route durch den Schutz mit Auth-Middleware erreichen können, machen eine kleine FileController

class FileController extends Controller { 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

    public function getFile($filename) 
    { 
     return response()->download(storage_path($filename), null, [], null); 
    } 
} 

und dann in routes.php

Und das ist es. Nun können Ihre authentifizierten Benutzer Dateien aus dem Speicherordner (aber nicht aus ihren Unterordnern) herunterladen, indem sie http://yoursite.com/file/secret.jpg aufrufen. Hinzufügen Sie können diese URL im src-Attribut eines Bild-Tags verwenden.

Antwort Original source!

Verwandte Themen