2017-08-23 53 views
0

我是初學者,希望你能理解。 我想要做的是使用angular和codeignitor上傳excel文件。 但問題是,當我我上傳它不被CI功能接受,狀態代碼是200,當我要打發,但我得到當我打印空數組帶代碼點火器的angularjs中的文件上傳

的print_r($ _ POST) ;的print_r($ _ FILES);

這裏是我的服務:

function UploadExcel(file,uploadUrl) { 
    var fd = new FormData(); 
     fd.append('file', file); 
     $http.post(uploadUrl, fd, { 
      transformRequest: angular.identity, 
      headers: {'Content-Type': 'multipart/form-data'}, 
     }) 
     .success(function(){ 
     }) 
     .error(function(){ 
     }); 

這裏是我的指令

app.directive('fileModel', ['$parse', function ($parse) { 
return { 
    restrict: '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]); 
      }); 
     }); 
    } 
}; 

}]);

這是我的控制器

$scope.ImportApplicant = function() { 
    var file = $scope.myFile; 
    var uploadUrl = 'user/fileUpload'; 
    UserService.UploadExcel(file, uploadUrl); 
} 

回答

0

對於角度代碼

$scope.setFile1 = function(element) 
{ 
    $scope.currentFile = element.files[0]; 
    var t = element.files[0].name; 
    var vali = t.split('.'); 
    var length = vali.length-1; 
    var final = vali[length]; 
    if(final=='txt' || final=='pdf' || final=='doc' || final=='docs') 
    { 
     var reader = new FileReader(); 
     reader.onload = function(event) 
     { 
      $scope.missing.image = event.target.result 
      $scope.$apply(); 
      $("#image_show").show(); 
     } 
     reader.readAsDataURL(element.files[0]); 
    } 
} 

$base64_string=$data['profile_image']; 
    if (preg_match('/base64/i', $base64_string)) 
    { 
    $randomfile=time().'.jpeg'; 
    $filename='./uploads/users/'.$randomfile; 
    $this->Cashback_model->base64_to_jpeg($base64_string, $filename); 
    } 
    else { 
      $file_name = explode('/', $base64_string); 
      foreach ($file_name as $keyval) { 
       $randomfile = $keyval; 
      } 
     } 

模型

public function base64_to_jpeg($base64_string,$output_file) { 
      $ifp = fopen($output_file, "wb"); 
      $data = explode(',', $base64_string); 

      fwrite($ifp, base64_decode($data[1])); 
      fclose($ifp); 

      return $output_file; 
     }