【发布时间】:2021-08-30 18:05:25
【问题描述】:
我是 GoLang 语言的新手,我想创建 REST API WebServer 用于文件上传...
所以我被困在通过 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 函数?
【问题讨论】: