4

<img>タグを使用してGoでローカル画像を表示するにはどうすればよいですか?

私は次のことを試しました:

fmt.Fprintf(w, "</br><img src='" + path.Join(rootdir,  fileName) + "' ></img>") 

ここで、rootdir = os.Getwd()であり、fileNameはファイルの名前です。

同じパスで試しhttp.ServeFileてみると、画像をダウンロードできますが、ウェブページ自体に埋め込みたいと思います。

4

3 に答える 3

8

私のGoの知識はせいぜいひどいものだと言ってこれを前置きしますが、私が行ったいくつかの実験はこれに少し関係しているので、おそらくこれは少なくともあなたを正しい方向に向けるでしょう。基本的に、以下のコードは、ルートディレクトリ(私の場合は)/images/のフォルダからファイルを提供する下のすべてにハンドルを使用します。次に、タグをハードコーディングするか、前と同じように使用して最初の引数を作成します。images/home/username/go/images/<img>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)
}
于 2012-10-15T03:59:23.470 に答える
2

たぶん、データURIを使用できます。

于 2012-10-15T03:30:21.950 に答える
0

これは私のために働いた:

package main

import (
   "io"
   "net/http"
   "os"
)

func index(w http.ResponseWriter, r *http.Request) {
   f, e := os.Open(r.URL.Path[1:])
   if e != nil {
      panic(e)
   }
   defer f.Close()
   io.Copy(w, f)
}

func main() {
   http.HandleFunc("/", index)
   new(http.Server).ListenAndServe()
}
于 2021-06-11T21:27:14.983 に答える