我使用Laravel作为API,使用AngularJS作为与之交互的前端。我正在尝试使用ng-file-upload上传文件,但我面临一个奇怪的问题。
全局变量$_FILES
仅包含上传的$request->file('img')
为空,因此自定义请求验证失败,因为它无法看到上传的文件。
我找到了几个答案,说明将use Illuminate\Http\UploadedFile;
添加到控制器,以便我可以访问上传的文件,但我不能到目前为止。我已经检查了表单中包含enctype="multipart/form-data"
的代码,但仍无法正常工作
我如何访问该文件,同时正确应用验证规则?
Angular Form:
<div class="small-6 medium-3 columns small-centered">
<form name="products.storeForm" ng-submit="products.store()" enctype="multipart/form-data">
<label>Name</label>
<input type="text" ng-model="products.product.name" name="name" required>
<label>Image</label>
<img ng-src="{{image_source}}">
<input type="file" name="img" onchange="angular.element(this).scope().setFile(this)" ngf-pattern="image/*" accept="image/*" ng-model="products.product.img">
<button type="submit" class="button">Submit</button>
</form>
</div>
Angular Service:
service.store = function(product){
console.log(product.img)
return Upload.upload({
url: url,
headers: { 'Content-Type' : 'application/json' },
method: 'POST',
sendFieldAs: 'form',
fields: {
name: product.name
},
file: product.img,
fileFormDataName: 'image'
})
};
答案 0 :(得分:0)
没有办法对此进行测试,但我使用image
密钥传递图像的事实将是我的起点(在您的Angular上传服务上):
fileFormDataName: 'image'
但是你试图使用Laravel中的img
键来获取它:
$request->file('img')
答案 1 :(得分:0)
在$request->file('img')
之前尝试使用laravel控制器方法下面的测试代码,我希望你能得到答案。
print('<pre style="color:red;">');
print_r($request->all());
print('</pre>');
exit;