Go中的'net / http'中的request.FormValue为空

时间:2018-12-16 13:39:05

标签: http go

我正在尝试使用端点创建一个简单的http服务,以将文件下载到Go中的本地系统。该链接位于?uri标签中,但是当我想要获取它时,会收到一个空字符串。我试图解析请求的形式,但没有帮助。这是我的代码:

func main() {
http.HandleFunc("/download", DownloadHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}

func DownloadHandler(writer http.ResponseWriter, request *http.Request) {
    prsErr := request.ParseForm()
    if prsErr != nil{
        panic(prsErr)
    }
    uri := request.FormValue("?uri")
    _, _ = writer.Write([]byte(uri))
    err := DownloadFile("img.png", uri)
    if err != nil {
        panic(err)
    }
}

func DownloadFile(filepath string, url string) error {

    // Create the file
    out, err := os.Create(filepath)
    if err != nil {
        return err
    }
    defer out.Close()

    // Get the data
    resp, err := http.Get(url)
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    // Write the body to file
    _, err = io.Copy(out, resp.Body)
    if err != nil {
        return err
    }

    return nil
}

我将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

request.FormValue("?uri")处无效

uri := request.FormValue("uri")