J'utilise http.FileServer
dans Go pour servir un fichier statique dans un répertoire.Répertoire énumérant les mauvais liens dans golang http.FileServer()
Voici comment je la carte à l'aide de MUX comme routeur:
r.PathPrefix("/download").Handler(http.StripPrefix("/download", http.FileServer(http.Dir(dirPath)))).Methods("GET")
où dirPath
est un chemin absolu d'un répertoire dans mon système de fichiers.
Maintenant, il semble fonctionner très bien en demandant l'inscription à l'annuaire avec localhost: 8080/téléchargement, car elle retourne une page comme celle
<pre>
<a href="a.xml">a.xml</a>
<a href="b.xml">b.zip</a>
</pre>
Malheureusement, les liens sont rompus parce que je les attends à être mis en correspondance, pour exemple à localhost:8080/download/a.xml
, tandis que le serveur de fichiers les mappe à localhost:8080/a.xml
.
Comment puis-je faire en sorte que ma liste de répertoires conserve le préfixe de chemin /download
dans les liens?
Vous avez raison. L'appelant est-il obligé de taper la barre oblique finale dans l'URL: localhost: 8080/download /? –
@AndreaCastello Non, ce n'est pas nécessaire, car le serveur enverra une redirection et le navigateur suivra automatiquement. Voir la réponse éditée. Essayez-le vous-même. – icza
@AndreaCastello S'il vous plaît voir la réponse révisée, ajouté des explications sur les mauvaises URL. – icza