亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Golang 中訪問上傳的文件

在 Golang 中訪問上傳的文件

Go
LEATH 2021-06-11 18:10:26
我在訪問使用 golang 上傳的文件時遇到問題。我對這門語言真的很陌生,并且已經進行了多次嘗試 - 在網上也找不到任何答案。我究竟做錯了什么?在這段代碼中,我永遠不會到達列出上傳文件數量的塊。func handler(w http.ResponseWriter, r *http.Request) {  fmt.Println("handling req...")  if r.Method =="GET"{    fmt.Println("GET req...")  } else {    //parse the multipart stuff if there    err := r.ParseMultipartForm(15485760)    //    if err == nil{        form:=r.MultipartForm        if form==nil {            fmt.Println("no files...")        } else {            defer form.RemoveAll()            // i never see this actually occur            fmt.Printf("%d files",len(form.File))        }    } else {        http.Error(w,err.Error(),http.StatusInternalServerError)        fmt.Println(err.Error())    }  }  //fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])  fmt.Println("leaving...")}更新我能夠讓上面的代碼工作。這很棒。下面的答案顯示了如何異步執行,這可能是比我的更好的代碼示例。
查看完整描述

2 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

如果你知道他們上傳文件的關鍵,你可以讓它更簡單我認為(這沒有經過測試):


infile, header, err := r.FormFile("file")

if err != nil {

    http.Error(w, "Error parsing uploaded file: "+err.Error(), http.StatusBadRequest)

    return

}


// THIS IS VERY INSECURE! DO NOT DO THIS!

outfile, err := os.Create("./uploaded/" + header.Filename)

if err != nil {

    http.Error(w, "Error saving file: "+err.Error(), http.StatusBadRequest)

    return

}


_, err = io.Copy(outfile, infile)

if err != nil {

    http.Error(w, "Error saving file: "+err.Error(), http.StatusBadRequest)

    return

}


fmt.Fprintln(w, "Ok")


查看完整回答
反對 回復 2021-06-28
  • 2 回答
  • 0 關注
  • 270 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號