我GoLang語言是新的,我要創建文件上傳REST API的WebServer ...GoLang通過POST請求發送文件
所以我通過POST請求停留在主要功能(文件上傳)到我的服務器...
我這行調用上傳功能
router.POST("/upload", UploadFile)
,這是我上傳功能:
func UploadFile(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
io.WriteString(w, "Upload files\n")
postFile(r.Form.Get("file"), "/uploads")
}
func postFile(filename string, targetUrl string) error {
bodyBuf := &bytes.Buffer{}
bodyWriter := multipart.NewWriter(bodyBuf)
// this step is very important
fileWriter, err := bodyWriter.CreateFormFile("file", filename)
if err != nil {
fmt.Println("error writing to buffer")
return err
}
// open file handle
fh, err := os.Open(filename)
if err != nil {
fmt.Println("error opening file")
return err
}
//iocopy
_, err = io.Copy(fileWriter, fh)
if err != nil {
panic(err)
}
bodyWriter.FormDataContentType()
bodyWriter.Close()
return err
}
但我看不到任何上傳的文件在我的/upload/
目錄中...
那麼我做錯了什麼?
P.S我得到第二個錯誤=>error opening file
,所以我認爲文件上傳或從UploadFile
函數獲取文件有問題,我是對嗎?如果是的話,比我如何能夠從這個功能提取或獲取文件到postFile
函數?
https://golang.org/pkg/os/#OpenFile允許您比其他功能更精確的模式管理。 – bayrinat
好的,但我怎麼能得到我發送到服務器的文件?因爲我可以創建文件,但它不一樣,我正在發送... – vladimir
@FredrikMårlind謝謝!!!!有效!!!! – vladimir