设置内容类型:以角度js发布请求

时间:2016-11-15 17:31:03

标签: javascript angularjs http post content-type

<input type="file" ng-model="articleimg" placeholder="upload related img">    

$http.post($scope.base_url+'create.php', 
            {params {view:'view',articleimg:$scope.articleimg}})
            .then(function(response){
                    console.log(response);
    });

我想知道如何以及在何处指定 此angularjs帖子请求中的content-type:multipart / form-data?

请协助。 默认似乎是&#34; application / json,text / plain,&#34; 这不适用于图像/文件上传。

if(isset($_FILES['articleimg'])===true ){
  echo "sucessfull";
}else echo "unsuccessfull";

上面的代码总是echos不成功。

1 个答案:

答案 0 :(得分:4)

$ http.post angular中的快捷方法有三个参数,网址,请求数据和配置对象,您可以在其中设置如下所示的标题:

$http.post('/someUrl', data, {headers:{'Content-Type': 'multipart/form-data'}}).then(successCallback, errorCallback);

在你的情况下,它将是:

$http.post($scope.base_url+'create.php', 
        {params {view:'view',articleimg:$scope.articleimg}}, {headers:{'Content-Type': 'multipart/form-data'})
        .then(function(response){
                console.log(response);
});

您还可以构建请求对象,如下所示:

{
 method: 'POST',
 url: $scope.base_url+'create.php',
 headers: {
   'Content-Type': 'multipart/form-data'
 },
 data: {params {view:'view',articleimg:$scope.articleimg}}
}

然后像这样提出请求:

$http(req).then(function(){...}, function(){...});

如果要设置常见的应用程序范围标题,可以使用默认标题,默认情况下将添加到所有请求中,如下所示:

$httpProvider.defaults.headers.common['Content-Type'] = 'multipart/form-data';

这将为所有请求添加上述内容类型。

文档here

中的更多信息