http函数包能否添加上传文件的支持
Mickls opened this issue · comments
我发现http包内的setFormData函数仅能支持application/x-www-form-urlencoded格式,并不支持multipart/form-data格式。无法通过SendRequest函数来实现上传文件的功能。
本来是打算提一个pr看看能否直接添加支持,不过在实现后发现ut测试需要一个支持上传文件的url地址来做支撑。如果可以的话也可以给出一个相应的接口,我可以实现这个功能。
或者,考虑再多新增一个mock的工具类?
@Mickls 确实需要支持mutipart,欢迎提PR🤝. 可以实现一个本地mock api. 参考以下:
package main
import (
"io"
"log"
"net/http"
)
func main() {
http.HandleFunc("/upload", handleUploadFile)
http.ListenAndServe(":8090", nil)
}
func handleUploadFile(w http.ResponseWriter, r *http.Request) {
log.Println("Content-Type: ", r.Header.Get("Content-Type"))
if err := r.ParseMultipartForm(0); err != nil {
log.Fatal(err)
return
}
file, header, err := r.FormFile("file")
log.Println("Upload file info: ", file, header, err)
w.Header().Set("Content-Type", "text/json")
io.WriteString(w, "ok")
}
@Mickls 确实需要支持mutipart,欢迎提PR🤝. 可以实现一个本地mock api. 参考以下:
package main import ( "io" "log" "net/http" ) func main() { http.HandleFunc("/upload", handleUploadFile) http.ListenAndServe(":8090", nil) } func handleUploadFile(w http.ResponseWriter, r *http.Request) { log.Println("Content-Type: ", r.Header.Get("Content-Type")) if err := r.ParseMultipartForm(0); err != nil { log.Fatal(err) return } file, header, err := r.FormFile("file") log.Println("Upload file info: ", file, header, err) w.Header().Set("Content-Type", "text/json") io.WriteString(w, "ok") }
看上去可行,我去实现下
v2.2.2版本已添加改特性