我有一个html页面,其中包含以下代码。
<form action="/image" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
然后我有一些Go代码来获取后端的文件。
func uploaderHandler(w http.ResponseWriter, r *http.Request) {
userInput := r.FormValue("file")
但是当我尝试从go脚本中使用userInput时,它什么都不返回。我传递的变量错了吗?
编辑:我知道如何上传golang文件/密码。我无法使用代码将图片上传到Go。编辑2:阅读Go指南找到解决方案。见下文。
答案 0 :(得分:3)
首先,您需要使用req.FormFile
而不是FormValue
,然后您必须手动将图像保存到文件中。
这样的事情:
func HandleUpload(w http.ResponseWriter, req *http.Request) {
in, header, err := req.FormFile("file")
if err != nil {
//handle error
}
defer in.Close()
//you probably want to make sure header.Filename is unique and
// use filepath.Join to put it somewhere else.
out, err := os.OpenFile(header.Filename, os.O_WRONLY, 0644)
if err != nil {
//handle error
}
defer out.Close()
io.Copy(out, in)
//do other stuff
}