Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Método Post e Put

Olá, estou com uma dúvida. Criei uma api rest com PHP e estou usando o AngularJS. Estou enviando texto e uma imagem (input file). No método post o AngularJS retorna o array com o arquivo (foto), mas no método put ele retorna vazio. Criei a variável fromData para ele localizar a imagem e não entendi pq ele tem essa diferença. Alguém pode me ajudar?

// Controller 

$scope.submeter = function(){

    var fromData = new FormData();
    for(var key in $scope.autor)
      fromData.append(key, $scope.autor[key]);

    if ($scope.autorForm.$valid){

      if ($routeParams.autorId) {
        $http.put('../api/autor/' + $scope.autor.idAutor, fromData,{
            transformRequest: angular.identity,
            headers: {'Content-Type': undefined}
          })
            .success(function() {
                $scope.mensagem = 'Autor alterado com sucesso';
            })
            .error(function(erro) {
                console.log(erro);
                $scope.mensagem = 'Não foi possível alterar o autor';
            });
      }else {
        $http.post('../api/autor', fromData, {
          transformRequest: angular.identity,
          headers: {'Content-Type': undefined}
        })
        .success(function(){
          $scope.autor = {};
          $scope.mensagem = 'Autor adicionado com sucesso';
        })
        .error(function(erro){
          console.log(erro);
          $scope.mensagem = 'Autor não adicionado';
        });
      };

    };

  };

});



// diretiva

angular.module('uploadFile',[]).directive('inputFile', ['$parse', function($parse){
  return{
    restrict : 'A',
    link : function(scope, element, attrs){
      var model = $parse(attrs.inputFile);
      var modelSetter = model.assign;

      element.bind('change', function(){
        scope.$apply(function(){
          modelSetter(scope, element[0].files[0]);
        })
      })
    }
  }
}]);

Agradeço a ajuda ;)

3 respostas

Fala aí Natália, tudo bem? Bom, primeiro gostaria de perguntar: "Porque está fazendo o curso de AngularJS?" Isso porque o mesmo já foi descontinuado pela Google.

Caso não precise dar manutenção em aplicações legados, sugiro pausar esse curso e começar o novo lançado sobre Angular 6.

Sobre o problema, acredito ser algo na API feita com PHP, pois o retorno virá dela, não é algo que influência no Angular.

Basicamente se a API retorna algo, o retorno será acessível na aplicação, caso contrário, o mesmo não terá valor.

Espero ter ajudado.

solução!

Obrigado pela dica!

Magina, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.