2017-01-04 3 views
0

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' 
    }) 
}; 
+0

デバッグモードをtrueに設定しましたか?おそらくエラーなどがあるかもしれません。 – kingtut007

+0

これは既に「true」に設定されており、エラーはまったくありません – omarsafwany

+0

フォームとコントローラコードを表示できますか? – Jerodev

答えて

0
これをテストするための手段を持っていないが、私はあなたが imageキーで画像を渡しているという事実は、次のようになり

私の出発点(あなたのAngularアップロードサービス):

fileFormDataName: 'image' 

$request->file('img') 
0

だけ$request->file('img')前laravelコントローラメソッドでテストコードの下に試してみて、私はあなたの答えを得ることを願っています:Laravelでimgキーを使用して、それをフェッチします。

print('<pre style="color:red;">'); 
print_r($request->all()); 
print('</pre>'); 
exit; 
関連する問題