如何在angularjs中获取输入类型文件的值?

时间:2015-09-11 12:26:02

标签: javascript php angularjs slim

我使用slim框架在angularjs中创建简单的应用程序。在那,我正在为一些数据创建表单,如名称,类别,货币和图像文件等。在这个应用程序中,我遇到输入类型文件的问题。我可以获得文本框或单选按钮等的所有数据,但我无法获取输入类型文件的数据。以下是代码。

index.html : - HTML文件

<form method="POST" enctype="multipart/form-data" class="form account-form" name="form" ng-submit="creator(user)" role="form">
<input type="text" name="name" ng-model="user.name"  /> 

<input type="radio" name="category" ng-model="user.category" value="Science" >                                  
<input type="radio" name="category" ng-model="user.category" value="Engineerig" >

<input type="file" ng-model="user.image_file" name="image_file">
</form>

registerController.js : - 控制器文件

app.controller('CreatorController', function($scope,$rootScope,$location,$http,CreatorService,FlashService) {
    $scope.creator = function (user) {
      // alert("create");
        $scope.dataLoading = true;
         CreatorService.creator(user)
                .then(function (response) {   
                    if(response.data['message']){ 
                        FlashService.Success('Registration successful', true);
                        $location.path('/crete-page');
                    } else {
                        FlashService.Error('Registration failed');
                    }
                });
    }    
});

registerDB.php : - slim framework dir中的数据库处理程序PHP文件

 <?php

function insertUser($data) {

    print_r($data); //Getting All data here from form but not getting File values
}
?>

2 个答案:

答案 0 :(得分:1)

如果您想将其发送到服务器,您只能接收该文件并将其发送,有时您必须将其转换为blob或其他内容。

我发现了fiddle

don't know if it works but you can try. (stupid stackoverflow makes me put code after a fiddle link, wtf!)

否则你可以使用angular-file-upload,至少是我在尝试做类似的事情时使用的。但是我在服务器上使用nodejs,甚至在服务器上我必须使用另一个特定于该情况的库来接收。不知道如何使用php。

GL!

答案 1 :(得分:0)

这可能是一个老问题,但我遇到了同样的问题,这就是我如何解决它。

将此代码添加到 registerController.js

function getPath() {
        $('#filePath ').on('change',function ()
        {
            var filePath = $(this).val();
            $scope.fileURL = filePath;
        });
    }
getPath();
然后

$ scope.fileURL 将保存输入文件的数据/值。然后,您可以将 user.image_file 设置为此值“$ scope.fileURL” 你的 html 应该是

<input id="filePath " type="file" ng-model="user.image_file" name="image_file">

希望这会有所帮助