2016-08-18 2 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 

EDIT

я нашел причину. Проблема не в javascript. Я использую Slim Framework на стороне сервера, а Slim Framewrok не может проанализировать объект FormData. Когда я пытаюсь опубликовать объект FormData в простой файл PHP, он работает. Но Слим Framework 3 он не работает

Я попытался

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

Я не угловая пользователь. Но проверяете ли вы угловую документацию, если они ее поддерживают? – Miks

+0

Я ничего не мог найти об отправке данных и загрузке изображений в угловую документацию. Но я уверен, что он разорван. Мне просто интересно, поддерживается ли этот метод для старых версий угловых. Я использую 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 пуст –

Смежные вопросы