google-app-engine - 寻找一种使用ajax使用angularjs将文件上传到应用程序引擎的方法

标签 google-app-engine angularjs go

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/

相关文章:

python - 如何对 jinja2 进行单元测试?

python - 当我在 googleappengine 上运行 localserver 时,错误是 "File "~/dev_appserver.py",第 102 行,在 <module> 中断言 sys.version_info[0] == 2 AssertionError"

javascript - 如何在 AngularJS Controller 中执行 if 语句

python - 应用引擎 : Running out of memory while traversing a table

python - 标准环境下的GCP : MySQL db connection refused

javascript - 翻译斗篷不适用于部分加载器

javascript - 更改文本区域模型后指令不会触发

mysql - 为什么 sql.Open() 不应该返回 nil 作为错误?

go - 我们如何知道字节数组上的结构类型

go - 如何使用 Fyne 制作扩展和拉伸(stretch)的布局框