Ich verwende http.FileServer
in Go, um einige statische Dateien in einem Verzeichnis bereitzustellen. Dies istVerzeichnis, das falsche Links in Golang auflistet http.FileServer()
, wie ich es Karte mit Mux als Router:
r.PathPrefix("/download").Handler(http.StripPrefix("/download", http.FileServer(http.Dir(dirPath)))).Methods("GET")
wo dirPath
einen absoluten Pfad eines Verzeichnisses in meinem Dateisystem ist.
Nun scheint es gut zu funktionieren, wenn das Verzeichnis mit localhost-Eintrag zu fragen: 8080/herunterladen, weil es eine Seite wie diese
<pre>
<a href="a.xml">a.xml</a>
<a href="b.xml">b.zip</a>
</pre>
Leider sind die Links sind gebrochen zurück, weil ich sie erwarten abgebildet werden, für Beispiel zu localhost:8080/download/a.xml
, während Dateiserver sie auf localhost:8080/a.xml
abbildet.
Wie kann ich in meinem Verzeichniseintrag den Pfadpfad /download
in Links beibehalten?
Du hast Recht. Ist der Aufrufer gezwungen, den folgenden Schrägstrich in URL einzugeben: localhost: 8080/download /? –
@AndreaCastello Nein, es wird nicht benötigt, da der Server eine Weiterleitung sendet und der Browser dies automatisch verfolgt. Siehe bearbeitete Antwort. Versuch es selber. – icza
@AndreaCastello Bitte lesen Sie die überarbeitete Antwort, zusätzliche Erklärungen zu den falschen URLs. – icza