如何使用<img>标签在Go中显示本地图像?
我试过以下内容:
fmt.Fprintf(w, "</br><img src='" + path.Join(rootdir, fileName) + "' ></img>")其中rootdir = os.Getwd()和fileName是文件的名称。
如果我尝试使用相同的路径http.ServeFile然后我可以下载图像,但我想将其嵌入网页本身。
How can I use the <img> tag to display a local image in Go?
I've tried the following:
fmt.Fprintf(w, "</br><img src='" + path.Join(rootdir, fileName) + "' ></img>")where rootdir = os.Getwd() and fileName is the name of the file.
If I try http.ServeFile with the same path then I can download the image, however I would like to embed it in the webpage itself.
最满意答案
我将在前言中说我的Go知识充其量是残暴的,但我所做的一些实验已经涉及到这一点,所以也许这至少会指向正确的方向。 基本上,下面的代码使用句柄来处理/images/下的任何内容,它们提供根目录中images文件夹中的文件(在我的例子中是/home/username/go )。 然后,您可以在<img>标签中硬编码/images/ ,或者像之前一样使用path.Join() ,使images成为第一个参数。
package main import ( "fmt" "net/http" "os" "path" ) func handler(w http.ResponseWriter, r *http.Request) { fileName := "testfile.jpg" fmt.Fprintf(w, "<html></br><img src='/images/" + fileName + "' ></html>") } func main() { rootdir, err := os.Getwd() if err != nil { rootdir = "No dice" } // Handler for anything pointing to /images/ http.Handle("/images/", http.StripPrefix("/images", http.FileServer(http.Dir(path.Join(rootdir, "images/"))))) http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }I'll preface this by saying my Go knowledge is atrocious at best, but the few experiments I've done have involved this a bit, so maybe this will at least point you in the right direction. Basically, the below code uses a Handle for anything under /images/ that serves files from the images folder in your root directory (in my case it was /home/username/go). You can then either hardcode /images/ in your <img> tag, or use path.Join() as you did before, making images the first argument.
package main import ( "fmt" "net/http" "os" "path" ) func handler(w http.ResponseWriter, r *http.Request) { fileName := "testfile.jpg" fmt.Fprintf(w, "<html></br><img src='/images/" + fileName + "' ></html>") } func main() { rootdir, err := os.Getwd() if err != nil { rootdir = "No dice" } // Handler for anything pointing to /images/ http.Handle("/images/", http.StripPrefix("/images", http.FileServer(http.Dir(path.Join(rootdir, "images/"))))) http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }更多推荐
发布评论