Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest Angularjs ngResource需要将文件作为字段之一_Rest_Angularjs_Post_File Upload_Ngresource - Fatal编程技术网

Rest Angularjs ngResource需要将文件作为字段之一

Rest Angularjs ngResource需要将文件作为字段之一,rest,angularjs,post,file-upload,ngresource,Rest,Angularjs,Post,File Upload,Ngresource,我拥有具有以下字段的资源: description, picture 是否可以将该资源以多部分/形式发送到URL,如果可以,如何发送 我试着把: app.factory('resource_name', ['$resource', function($resource) { return $resource('<url> ', { <params_for_url> }, save: { me

我拥有具有以下字段的资源:

description, picture
是否可以将该资源以多部分/形式发送到URL,如果可以,如何发送

我试着把:

app.factory('resource_name', ['$resource', function($resource) {
return $resource('<url> ',
    {
            <params_for_url>
    },
        save: {
            method: "POST",
            headers: {
                "Content-Type": "multipart/form-data;"
            }
        },
以前有人满足过这个要求吗?如果这是可能的话


谢谢

我找到了解决这个问题的办法。您必须使用FormData来提交它。您可以将其用作拦截器。我这样使用它(这是我的ngResource保存方法)

这是变压器:

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

仅设置内容类型不会使用AJAX上载文件…如果需要跨浏览器支持,请使用文件上载器插件它需要什么转换器?否则它不会发送文件…它只发送简单的表单字段。什么是transformer,看看angularjs官方页面这很有效,但我在使用它时没有设置标题内容长度,有没有办法为文件设置标题内容长度?你有没有尝试过使用不包含文件的表单?它有效吗?我认为应该,但在这种情况下,您还应该考虑更改enctype
            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;
        }