Angularjs ngResource需要将文件作为其中一个字段

时间:2013-11-26 21:48:19

标签: rest angularjs post file-upload ngresource

我的资源有以下字段:

description, picture

是否可以将该资源作为multipart / form发送到URL,如果是,如何?

我尝试过:

app.factory('resource_name', ['$resource', function($resource) {
return $resource('<url> ',
    {
            <params_for_url>
    },
        save: {
            method: "POST",
            headers: {
                "Content-Type": "multipart/form-data;"
            }
        },

但这不会作为表单数据到达服务器。它就像JSON一样只设置了标题:

{
description: "gtrdgf",
picture: {
    lastModifiedDate:2013-11-26T20:42:13.000Z,
    name: "suggested_pokes.png"
    size: 32995
    type: "image/png"
    webkitRelativePath: ""
}

之前有没有人满足这个要求?如果可以的话......

谢谢!

1 个答案:

答案 0 :(得分:11)

我找到了解决方案。您必须使用FormData提交它。你可以用它作为拦截器。我这样使用它(这是我的ngResource的保存方法)

            save: {
                method: 'POST',
                transformRequest: formDataObject,
                headers: {'Content-Type':undefined, enctype:'multipart/form-data'}
            },

这里是变压器:

        function formDataObject (data) {
            var fd = new FormData();
            angular.forEach(data, function(value, key) {
                fd.append(key, value);
            });
            return fd;
        }