2016-08-18 42 views
0

我嘗試了互聯網上的每個解決方案,但都無法取得成功。在Angular JS中同時發送表單數據和上傳文件

我可以使用Angular JS上傳圖像文件。但是這次我需要額外的值來保存服務器上的圖像。我正在嘗試發送兩個數組。其中一個將是文件項目,另一個將是一個包含文件夾信息的簡單發佈數據。

subjectDetails.addData = function(post_value){ 
    var defer = $q.defer(); 

    var fd = new FormData(); 
    fd.append('files', post_value.files); 
    fd.append('data', post_value.data); 

    //fd.append("data", 'something'); 
    //fd.append("data", JSON.stringify(post_value.data)); 


    $http.post($rootScope.defaultApiPath + '/saveItem', fd, { 
     withCredentials : false, 
     transformRequest: angular.identity, 
     headers: {'Content-Type': undefined} 
    }) 
    .success(function(response, status){ 
     defer.resolve(response); 
    }) 
    .error(function(error, status){ 
     defer.reject(error); 
    }); 


    return defer.promise; 
}; 

當我發佈它時,我可以用$ _FILES獲取圖像文件,但$ _POST變量爲NULL。

我試圖

var_dump($_POST); //NULL 
var_dump($_POST['data']); //NULL 
var_dump($_FILES); //shows only the file info. The other array is not in it 

編輯

我找到了原因。問題不在於javascript。我在服務器端使用Slim Framework,Slim Framewrok無法解析FormData對象。當我嘗試將FormData對象發佈到一個簡單的PHP文件時,它可以工作。但隨着超薄框架3它不工作

我試圖

$request->getBody(); //Still NULL 
$request->getParsedBody(); //Still Null 
+0

我不是一個角用戶。但是,如果他們支持它,你是否檢查了角度文檔? – Miks

+0

我找不到有關發送角度文檔中的數據和圖像上傳的任何內容。但我相信它是受歡迎的。我只是想知道這個方法是否支持老版本的angular。我使用1.5,它不起作用。但帖子是從2015年。不是很老:) –

回答

0

您可以將多形式的數據,這是一個偉大的plugin,並期待這個fiddle這個可以發送圖像和數據一起上傳控制器。編輯您的帖子,並告訴我們在服務器端什麼來幫助你

file.upload = Upload.upload({ 
     url: 'YOUR UPLOAD URL GOES HERE', 
     data: {username: $scope.username, file: file}, 
    }); 

改變服務器URL,並期待該數據,無論您來自的數據和文件可以一起發送

+0

謝謝你的答案。但問題在於苗條的框架。它無法分析FormData對象,並且var_dump($ _ POST)仍然是NULL。 var_dump($ _ FILES)返回文件對象。但$ _POST是空的 –

相關問題