登录
首页 >  Golang >  Go问答

"在 Go 的 'net/http' 中 request.FormValue 返回空值"

来源:stackoverflow

时间:2024-03-22 23:12:23 314浏览 收藏

在 Go 的 `net/http` 中,`request.FormValue` 方法在处理表单数据时可能会返回空值。当使用 `?uri` 这样的查询参数时,应使用 `request.FormValue("uri")`,而不是 `request.FormValue("?uri")`。

问题内容

我正在尝试创建一个简单的 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
}

我将不胜感激任何帮助!谢谢!


解决方案


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

uri := request.FormValue("uri")

今天关于《"在 Go 的 'net/http' 中 request.FormValue 返回空值"》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>