package main
import (
"fmt"
"net/http"
)
func index_handler(w http.ResponseWriter, r *http.Request) {
// MAIN SECTION HTML CODE
fmt.Fprintf(w, "<h1>Whoa, Go is neat!</h1>")
fmt.Fprintf(w, "<title>Go</title>")
fmt.Fprintf(w, "<img src='gopher.jpeg' alt='gopher' style='width:235px;height:320px;'>")
}
func about_handler(w http.ResponseWriter, r *http.Request) {
// ABOUT SECTION HTML CODE
fmt.Fprintf(w, "<title>Go/about/</title>")
fmt.Fprintf(w, "Expert web design by -")
}
func main() {
http.HandleFunc("/", index_handler)
http.HandleFunc("/about/", about_handler)
http.ListenAndServe(":8000", nil)
}
在我的代码中,我尝试将图像放在屏幕上。所有这一切都是使用alt。我将jpeg文件放在与我的代码相同的目录中。因为我使用Go,有什么必须添加的吗?谢谢你的帮助。
答案 0 :(得分:1)
首先,我建议您将图片,css,js和其他资源放入一个单独的文件夹,而不是你的应用程序所在的文件夹,子文件夹也可以,只需将它们与你的代码分开。
完成后,您需要告诉Go如何以及从何处提供这些文件。
以下是一个例子:
package main
import (
"fmt"
"net/http"
)
func index_handler(w http.ResponseWriter, r *http.Request) {
// MAIN SECTION HTML CODE
fmt.Fprintf(w, "<h1>Whoa, Go is neat!</h1>")
fmt.Fprintf(w, "<title>Go</title>")
fmt.Fprintf(w, "<img src='assets/gopher.jpeg' alt='gopher' style='width:235px;height:320px;'>")
}
func about_handler(w http.ResponseWriter, r *http.Request) {
// ABOUT SECTION HTML CODE
fmt.Fprintf(w, "<title>Go/about/</title>")
fmt.Fprintf(w, "Expert web design by JT Skrivanek")
}
func main() {
http.HandleFunc("/", index_handler)
http.HandleFunc("/about/", about_handler)
http.Handle("/assets/", http.StripPrefix("/assets/", http.FileServer(http.Dir("./assets"))))
http.ListenAndServe(":8000", nil)
}
这假设你的项目结构如下:
└── app
├── assets
│ └── gopher.jpeg
└── main.go
并且您已从app
文件夹中启动了您的应用。
另请注意,您还必须更改HTML图像链接以反映更改。例如。;而不是<img src='gopher.jpeg' ...
您有<img src='assets/gopher.jpeg' ...
答案 1 :(得分:-1)
你只需要使用<img>
标签,但你使用'而不是'除了代码看起来很好,但我会考虑使用CSS而不是html来设置图像大小。它不是必需的,但是更常见。
请忽略上述内容,我不正确!
以下代码应该有帮助,它位于here
func Home(w http.ResponseWriter, r *http.Request) {
//w.Write([]byte(fmt.Sprintf("Generating QR code\n")))
// generate a random string - preferbly 6 or 8 characters
randomStr := randStr(6, "alphanum")
// For Google Authenticator purpose
// for more details see
// https://github.com/google/google-authenticator/wiki/Key-Uri-Format
secret = base32.StdEncoding.EncodeToString([]byte(randomStr))
//w.Write([]byte(fmt.Sprintf("Secret : %s !\n", secret)))
// authentication link. Remember to replace SocketLoop with yours.
// for more details see
// https://github.com/google/google-authenticator/wiki/Key-Uri-Format
authLink := "otpauth://totp/SocketLoop?secret=" + secret + "&issuer=SocketLoop"
// Encode authLink to QR codes
// qr.H = 65% redundant level
// see https://godoc.org/code.google.com/p/rsc/qr#Level
code, err := qr.Encode(authLink, qr.H)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
imgByte := code.PNG()
// convert byte to image for saving to file
img, _, _ := image.Decode(bytes.NewReader(imgByte))
err = imaging.Save(img, "./QRImgGA.png")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
// in real world application, the QRImgGA.png file should
// be a temporary file with dynamic name.
// for this tutorial sake, we keep it as static name.
w.Write([]byte(fmt.Sprintf("<html><body><h1>QR code for : %s</h1><img src='http://localhost:8080/QRImgGA.png'>", authLink)))
w.Write([]byte(fmt.Sprintf("<form action='http://localhost:8080/verify' method='post'>Token : <input name='token' id='token'><input type='submit' value='Verify Token'></form></body></html>")))
}
func main() {
http.HandleFunc("/", Home)
http.HandleFunc("/verify", Verify)
// this is for displaying the QRImgGA.png from the source directory
http.Handle("/QRImgGA.png", http.FileServer(http.Dir("./"))) //<---------------- here!
http.ListenAndServe(":8080", nil)
}
[1]: https://www.socketloop.com/tutorials/golang-how-to-display-image-file-or-expose-css-js-files-from-localhost