2016-04-07 8 views
0

ich in Yii2 möchte eine einfacheYii2 HTML-Link-Dokument auf externen Dateisystem zu öffnen

[a href = "C: /Vo/AGO/2015.pdf"> 2015 [/ a> ([muss sein a <)

auf einem meiner Formulare. Ich möchte die Datei nicht hochladen, da die PDF-Datei (Hilfe) von einer externen Organisation aktualisiert wird (anstelle von C: das Pad ist ein Server, aber aus Testzwecken verwende ich C :), und ich muss es anzeigen viele Dateien, die von dieser Organisation verwaltet werden.

Also ich benutze:

Html :: a ("2015", "C: /Vo/Ago/2015.pdf")

Wenn ich die Anwendung ausführen und ich über Show inspizieren Quelle ich sehe

[a href = "C: /Vo/Ago/2015.pdf"> 2015 [/ a>

Aber wenn ich den Link auf meine Form klicken, passiert nichts! (Wenn ich die gleiche Sache in einem einfachen HTML-Dokument zu tun - nicht yii2 - die pdf öffnet)

Wenn ich den Link ich die rechte Maustaste und kopieren Sie kopiere: file: /// C:/Vo/Ago/2015.pdf

Also, was fehlt mir? Ja, ich bin neu in Yii2 und ich habe viel im Internet gesucht, um eine Lösung zu finden.

Wenn dies bereits gefragt wird, entschuldigen Sie mich, ein Verweis auf die Lösung wäre dann willkommen sein ...

Danke,

Chris G. M. Logghe

+0

Auch wenn Ihr Code auf Ihrem Computer funktioniert, funktioniert er nicht auf dem Server, weil Sie versuchen, lokal auf die Datei zuzugreifen. – MrD

Antwort

1

Weil Sie versuchen, "lokale" Datei im Browser zu verknüpfen.

Einige Browser, wie moderne Versionen von Chrome, wird auch von dem HTTP-Protokoll auf das Dateiprotokoll zu Quer verweigern, so dass Sie stellen Sie sicher ist besser, Sie diese lokal auch das Dateiprotokoll verwenden, wenn Sie möchten, mach das Zeug überhaupt.

See here for more details.

Die beste Option für Sie ist Aktion Controller zu erstellen und Download-Datei dort ausführen.

Ihrer Ansicht:

$data = 'C:/data/mydata.log'; 
echo Html::a('Download', ['sample-download', 'filename' => $data], ['target' => '_blank']); 

In Ihrem Controller:

public function actionSampleDownload($filename) 
{ 
    ob_clean(); 
    \Yii::$app->response->sendFile($filename)->send(); 
} 

Natürlich Sie Muss Grenze zu bestimmten Verzeichnis, anstatt Benutzer geben vollen Zugriff auf Dateinamen.

Verwandte Themen