上传文件角度时如何在标题中设置标记值

时间:2017-01-03 05:43:02

标签: angularjs file-upload http-headers

我使用angular和node.js API上传文件。 我正在关注this链接以上传文件。  在本教程中,我们需要设置标题headers: {'Content-Type': undefined}

另一方面,我需要为authentication token设置标头值。为此,我将默认标头值设置为$http.defaults.headers.common.Authorization = $cookieStore.get('token');

现在当我上传文件时,出现错误,即

Error: Can't set headers after they are sent.

现在请让我知道如何解决这个问题.. 或任何实现此目的的解决方案。 感谢

以下是文件上传的服务和控制器

 app.service('fileUpload', ['$http','$cookieStore', function ($http, $cookieStore) {
            this.uploadFileToUrl = function(file, uploadUrl){
                var token = $cookieStore.get('token') ; 
               var fd = new FormData();
               fd.append('file', file);

               $http.post(uploadUrl, fd, {transformRequest: angular.identity,headers: {'Content-Type': undefined} }) 
               .success(function(res){
               })
               .error(function(){
               });
            }
         }]);


app.controller('csvCtrl', function($scope, fileUpload){
        $scope.importcsv=function(){
            var file=$scope.myFile;
            var uploadUrl="/api/parsecsv";
            fileUpload.uploadFileToUrl(file, uploadUrl);
        }
        });

1 个答案:

答案 0 :(得分:0)

这应该让你能够应用标题:

app.service('fileUpload', ['$http', '$cookieStore', function ($http, $cookieStore) {
    this.uploadFileToUrl = function (file, uploadUrl) {
        var token = $cookieStore.get('token');
        var fd = new FormData();
        fd.append('file', file);

        $http.post(uploadUrl, fd, 
            {
                transformRequest: angular.identity, 
                headers: {
                    'Content-Type': undefined,
                    'Authorization': token
                }
            })
            .success(function (res) {
            })
            .error(function () {
            });
    }
}]);

一旦开始工作,您可以使用interceptor设置默认标头。