设置 Content-Type:在 Angular js 发布请求中
Posted
技术标签:
【中文标题】设置 Content-Type:在 Angular js 发布请求中【英文标题】:setting Content-Type: in angular js post request 【发布时间】:2017-03-29 16:58:21 【问题描述】:<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 发布请求中的内容类型:multipart/form-data?
请帮忙。 默认似乎是“应用程序/json,文本/纯文本” 这不适用于图像/文件上传。
if(isset($_FILES['articleimg'])===true )
echo "sucessfull";
else echo "unsuccessfull";
上面的代码总是回显不成功。
【问题讨论】:
【参考方案1】:$http.post Angular 中的快捷方法采用三个参数,url、请求数据和一个配置对象,您可以在其中设置如下标头:
$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
【讨论】:
Content-Type 中的“-”是抛出错误。意外的令牌。 也尝试了第二个选项“$http(req)”,但它只是没有显示在 php 服务器上。当我尝试这个 if(isset($_FILES['articleimg'])===true ) echo "sucessfull"; else echo "不成功"; 添加引号确实消除了错误。谢谢。但服务器端没有锁。以上是关于设置 Content-Type:在 Angular js 发布请求中的主要内容,如果未能解决你的问题,请参考以下文章
Angular 6:无法正确设置 http Header 的 Content-Type
Angular 2没有将Content-Type设置为'multipart / form-data',而是设置为'application / json'
如何在angular2中设置Content-Type和Accept得到错误415 Unsupported Media Type
使用 Javascript(或 Angular)在每个部分上使用不同的 Content-Type 组合 multipart/form-data