我已经整理了一个golang func,它接受一个上传的文件并将其保存到文件夹中。
就在os.Create()
之前,我收到以下错误:
http: panic serving [::1]:64373: runtime error: index out of range
我的golang功能是:
func webUploadHandler(w http.ResponseWriter, r *http.Request) {
file, header, err := r.FormFile("file") // the FormFile function takes in the POST input id file
if err != nil {
fmt.Fprintln(w, err)
return
}
defer file.Close()
// My error comes here
messageId := r.URL.Query()["id"][0]
out, err := os.Create("./upload/" + messageId + ".mp3")
if err != nil {
fmt.Fprintf(w, "Unable to create the file for writing. Check your write access privilege")
return
}
defer out.Close()
// write the content from POST to the file
_, err = io.Copy(out, file)
if err != nil {
fmt.Fprintln(w, err)
}
fmt.Fprintf(w,"File uploaded successfully : ")
fmt.Fprintf(w, header.Filename)
}
任何想法?非常感谢
答案 0 :(得分:4)
您至少应该检查r.URL.Query()["id"]
是否实际上有一个元素。
如果len(r.URL.Query()["id"])
,您可以考虑不访问索引0。
更简单,Ainar-G建议in the comments使用Get() method
获取与给定密钥关联的第一个值。
如果没有与该键相关联的值,则Get返回空字符串 要访问多个值,请直接使用地图。