2015-06-22 8 views
0

Я пытаюсь загрузить локальный файл, но я понимаю, что метод http.get, который я использую, не поддерживается моим браузером. Кто-нибудь знает об альтернативном способе, которым я должен это делать?AngularJS Upload Local File

<!doctype html> 
<html ng-app="demoApp"> 
    <head> 
    </head> 
    <body ng-controller="demoController"> 


    Filter City: <input ng-model="filterCity"> 
    <ul> 
    <li ng-repeat="office in offices | filter:filterCity"><u>{{ office.city }}</u> - {{office.name}}</li> 
    </ul> 



    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular.min.js"></script> 
    <script> 
     var demoApp = angular.module("demoApp", []); 
     demoApp.controller("demoController", ['$scope', '$http', function($scope, $http) { 
     $scope.filterCity = ""; 
     $scope.offices = []; 

     $http.get('/angular-demo/data').success(function(data){ 
      $scope.offices = data; 
     }) 

     }]) 

    </script> 

    </body> 
</html> 

ответ

0

Вы можете использовать ng upload module и есть многие способы, но мне нравится этот модуль больше. Вы можете сделать это изначально с помощью директивы логотипо как этот блог upload file

или мой путь нативно

  app.directive('fileModel', ['$parse', function ($parse) { 
      return { 
      restrrict: 'A', 
      link: function (scope, element, attrs) { 
       var model = $parse(attrs.fileModel); 
       var modelSetter = model.assign; 
       element.bind('change', function() { 
        scope.$apply(function() { 
         modelSetter(scope, element[0].files[0]); 
        }) 
       }) 
      } 
      } 
      }]) 

      app.service('uploader', ['$http', function ($http) { 
      this.post = function (uploadUrl, data) { 
      var fd = new FormData(); 
      for (var key in data) 
       fd.append(key, data[key]); 
      $http.post(uploadUrl.fd, { 
       transformRequest: angular.identity, 
       headers: { 'Content-Type': undefined } 
      }) 
      } 
      }]) 

В вашей наценку

 <form> 
     <input type="file" file-model="f.file"></input> 

     <button type="submit" class="btn btn-danger" ng-click="submit()">Upload</button> 

    </form> 

ваш контроллер $scope.f = {}; $scope.f.Id = 2; $scope.f.tr = 'hi'; $scope.submit = function() { var uploadUrl = 'https://angular-file-upload-cors-srv.appspot.com/upload'; uploader.post(uploadUrl, $scope.f.file); }