2017-07-24 14 views
0

Ich habe einen einfachen Webserver und möchte Bilder im Browser öffnen. Das Problem ist, dass der Browser ein Bild, das ich gesendet habe, nicht öffnen kann.So öffnen Sie Bilder auf dem Webserver

Auch meine HTML-Vorlage-Paket, wo ich einen Link zur Datei auf meinem Computer erstellen. Genannt link.html

{{ define "link" }} 


    <!DOCTYPE html> 
    <html lang="en"> 
    <head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
    </head> 
    <body> 

    <p> <a href="/images/2.jpg">apple</a></p> 
    <br> 

    </body> 
    </html> 


    {{ end }} 

Ich verstehe nicht, warum es nicht funktioniert. Wird sehr froh um Hilfe sein. Darüber hinaus sind alle Dateien, die ich mit dem Server hinzufügen wollte in diesem golang Projekt liegen

Antwort

2

Es ist, weil Sie tun nicht haben jede dedizierte Route, die Anfragen nach irgendwelche Bilder verarbeitet.

Meine Empfehlung wäre, einen HTTP-Handler zu initialisieren, der die Datei basierend auf dem URI-Pfadnamen bereitstellt. Sie können diesen Handler zum Bereitstellen von Bildern verwenden.

fs := http.FileServer(http.Dir("images")) 

Und dann ist es zu binden:

http.Handle("/images/", http.StripPrefix("/images/", fs)) 

Hier ist Ihre vollständige Code mit meinen Vorschlägen:

package main 

import (
    "fmt" 
    "html/template" 
    "net/http" 
) 

func main() { 
    // We're creating a file handler, here. 
    fs := http.FileServer(http.Dir("images")) 

    http.HandleFunc("/images", images) 

    // We're binding the handler to the `/images` route, here. 
    http.Handle("/images/", http.StripPrefix("/images/", fs)) 

    http.ListenAndServe(":8080", nil) 
} 

func images(w http.ResponseWriter, r *http.Request) { 
    t, err := template.ParseFiles("templates/link.html") 
    if err != nil { 
    fmt.Fprintf(w, err.Error()) 
    return 
    } 

    t.ExecuteTemplate(w, "link", nil) 
} 
+0

Sie für die Hilfe danken. Es klappt! –

Verwandte Themen