gpt4 book ai didi

html - 使用 HTML 表单部分显示图像文件的简单方法

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:15 25 4
gpt4 key购买 nike

我一直在研究大量的 go 服务器片段,试图弄清楚如何在 HTML 文件中显示图像文件或 go HTTP 模板以及 html 表单部分。基本上,如果我使用 go 模板,最大的问题是我无法将图像与 html 一起显示,并且仍然保持项目大小较小。似乎让模板工作的唯一方法是将代码组织成一个我试图避免的“典型的 HTML 项目”。

是否有任何简单的方法(只有几个文件而不是创建“典型的 go web 项目文件结构”)在 go 模板中显示带有图像的 HTML?我相信下面的问题基本上与 http 处理程序有关。我可以拥有文本处理程序或图像处理程序但不能同时拥有两者吗?我需要两者,这样我就可以让用户从 HTML 表单中控制要显示的图像。

如果有人能提供帮助,我将不胜感激。

R乔

--修订抱歉不清楚。我对 go templates 的经验有限,我见过很多例子,人们使用 go app 项目文件结构,这些文件结构可能包括 templates、img 等目录。这些目录通常有 10 个或更多。然后他们谈论在应用程序中使用路由和其他我不敢涉足的事情。

我只是把我想做的事情看得简单得多。我有大约 70 张图片。我只想要一种用户可以单击显示图像的 html 页面并根据显示的图像提供数字 1、2、3、4 作为反馈的方法。

我想象一个 go 程序(1 个文件)可以接收数字,一旦接收到更改 html 页面上的 img 或允许用户单击下一个超链接或其他内容以调出下一个图像,一旦结束程序停止。

package main
import (

"fmt"
"html/template"
"log"
"net/http"
//"strings"



func img(w http.ResponseWriter, r *http.Request) {

//http.Handle("/images/", http.StripPrefix("/images/", http.FileServer(http.Dir("images/"))))

fmt.Println("method:", r.Method) //get request method

if r.Method == "GET" {
t, _ := template.ParseFiles("image.gtpl")
t.Execute(w, nil)
} else {
r.ParseForm()
// logic part of log in
fmt.Println("previmage:", r.Form["previmage"])
fmt.Println("nextimage:", r.Form["nextimage"])
}
}

func main() {

//http.HandleFunc("/", sayhelloName) // setting router rule
http.HandleFunc("/login", login)
err := http.ListenAndServe(":9090", nil) // setting listening port
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

<html>
<head>
<title></title>
</head>
<body> //How to Loop Images based on user submit??
<img src="img/question4.png" alt="Cannot load image" style="width: 800px;height: 800px">
<form action="/login" method="post">
Username:<input type="text" name="previmage">
Password:<input type="password" name="nextimage">
<input type="submit" value="Login">
</form>
</body>
</html>

最佳答案

您有 http.Handle 调用,它注册处理程序,在处理程序内部。这意味着每次收到请求时,它都会再次尝试注册处理程序。这是不允许的(因此出现错误,明确表示您不能重新注册相同的路线)。您应该在为模板注册处理程序的同一位置注册它,即在 main 中:

func main() {
http.HandleFunc("/login", login)
// Register handler correctly
// I changed the route to /img/ to match what you're using in your HTML
http.Handle("/img/", http.StripPrefix("/img/", http.FileServer(http.Dir("images/"))))
err := http.ListenAndServe(":9090", nil) // setting listening port
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

关于html - 使用 HTML 表单部分显示图像文件的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56551429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com