Javascript 代码:
$http({
method: 'POST',
url: 'some/path',
headers: { 'Content-Type': false },
transformRequest: function (data) {
var formData = new FormData();
formData.append("file", data);
return formData;
},
data: file
}).
success(function (data, status, headers, config) {
alert("success!");
}).
error(function (data, status, headers, config) {
alert("failed!");
});
服务器代码:
func addImageHandler(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
blobs, _, err := blobstore.ParseUpload(r)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
file := blobs["file"]
....
}
我的处理程序很好,但是当我解析上传时,我的 blob 映射中没有任何文件。有什么明显的我遗漏了吗?
谢谢!
最佳答案
看起来你的 Content-Type 是错误的,它应该是 multipart-form 等等。
headers: { 'Content-Type': false },
确保表单的字段类型如下:
<input type="file" />
最后确定
len(blobs["file"]) != 0
如果是,则很可能意味着浏览器没有以正确的格式发送数据,appengine 也没有识别它。使用 Chrome 开发人员工具检查试图发送的 ajax 调用是什么。
这是一个很好的 angularjs 小部件上传数据的 fiddle :http://jsfiddle.net/CPsRs/
关于google-app-engine - 寻找一种使用ajax使用angularjs将文件上传到应用程序引擎的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353611/