2015-09-19 36 views
0

我想在我的應用程序中實現文件上傳。我使用AngularJS並在控制器中寫入方法來從表單輸入中獲取所有文件。在瀏覽器控制檯中,我有一個包含選定文件的數組,但是當我將此數組發送到後端時,它是空的。我用相同的方法發送其他數據,我可以在沒有任何問題的PHP腳本中讀取它,只有文件數組是空的。如何發送從角度到PHP腳本的文件數組?

這是方法從輸入獲取文件並將其發送給後端:

$scope.addFilesFunction = function() { 
     $scope.filesList = document.getElementById('fileupload').files; 
     var fd = new FormData(); 
     for (var i = 0; i < $scope.filesList.length; i++) { 
      fd.append('file', $scope.filesList[i]); 
     } 
     Database.insert('file', {'files': fd}, function(response) { 

     }); 
    }; 

這是一段我的PHP代碼:

$postdata = file_get_contents("php://input"); 
$request = json_decode($postdata); 
$files = $request->files; 
+0

你試圖發送到後端的文件格式是什麼? – underscore

回答

0

來源:https://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs

其如果沒有所有的代碼,有點難以分辨,但看起來好像你並沒有將實際的文件發佈到PHP。

.service('fileUpload', ['$http', function ($http) { 
    this.uploadFileToUrl = function(file, uploadUrl){ 
     var fd = new FormData(); 
     fd.append('file', file); 
     $http.post(uploadUrl, fd, { 
      transformRequest: angular.identity, 
      headers: {'Content-Type': undefined} 
     }) 
     .success(function(){ 
     }) 
     .error(function(){ 
     }); 
    } 
}]); 

var file = $scope.myFile; 
var uploadUrl = 'http://www.example.com/yourphpscript.php'; 
fileUpload.uploadFileToUrl(file, uploadUrl); 

,然後用你的PHP腳本來處理,你想工作的任何數據庫的魔法。 如果您想導入一個文件數組,只需將一個數組傳遞給fileUpload,然後遍歷您的文件數組並將每個數據追加到FormData追加。