APIとしてLaravelを使用しており、これと対話するフロントエンドとしてAngularJSを使用しています。私はng-file-uploadを使ってファイルをアップロードしようとしていますが、私は奇妙な問題に直面しています。
グローバル変数$_FILES
にはアップロードされたデータのみが含まれていますが、$request->file('img')
は空ですが、アップロードされたファイルが表示されないためカスタムリクエストの検証に失敗します。
use Illuminate\Http\UploadedFile;
をコントローラに追加して、アップロードされたファイルにアクセスできるようになるとの回答がいくつか見つかりましたが、これまでのところできません。フォーム内でenctype="multipart/form-data"
のコードをチェックしましたが、何も動作しません。
どのようにしてこのファイルにアクセスできますか?同時に、検証ルールが正しく適用されますか?
角度フォーム:
<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>
角度サービス:
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'
})
};
デバッグモードをtrueに設定しましたか?おそらくエラーなどがあるかもしれません。 – kingtut007
これは既に「true」に設定されており、エラーはまったくありません – omarsafwany
フォームとコントローラコードを表示できますか? – Jerodev