2
我有一个本地golang服务器,其端点侦听POST请求,解码请求的正文并保留它。这工作时,我手动卷曲端点就像在POST请求中将图像附加到golang服务器
curl -X POST localhost:8080/newimage --data-binary "PATH"
但是,我无法成功上传在通过GUI我工作的一个POST请求的文件。我正在使用https://github.com/okonet/react-dropzone删除File并将其附加到FormData对象,但golang服务器似乎没有收到填充的正文。
这是我如何创建AJAX查询:
formData = new FormData();
formData.append("image", file)
$.ajax({
url: "http://localhost:8080/items/81d648b0-25f9-434e-9129-fe52575865dd/newimage",
type: "POST",
data: formData,
processData: false
}).done(function(res) {
console.log(res);
});
和后端服务器:
func (h *ItemHandler) PostImage(resp http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
itemID := vars["id"]
assetID := newAssetID()
// verify image
img, _, err := image.Decode(req.Body)
if err != nil {
log.Printf("could not decode body into an image")
resp.Header().Add("Access-Control-Allow-Origin", "*")
resp.WriteHeader(http.StatusBadRequest)
resp.Write([]byte("could not decode body image"))
return
}
将不胜感激的任何建议。
也许问题是关系到'被设置为'应用内容Type'头/ x-www-form-urlencoded“。尝试将其更改为'application/octet-stream'。 – hindmost
Go从来没有这样做过,但是你应该解码请求数据的'image'字段吗?身体可能不包含有效的图像...更像'image = YourImageEncodingData' – Elwinar
您只检查'err!= nil',但_what is_错误? 'error'不仅仅是一个'bool'类型(是'nil'或者非'nil')... – icza