将图像从html表单传递给Go

时间:2014-08-10 05:11:04

标签: html go

我有一个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指南找到解决方案。见下文。

1 个答案:

答案 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
}