我使用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
}
?>
答案 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">
希望这会有所帮助