2017-07-12 9 views
0

私は単純なHTMLファイルのアップロードをしようとしています。Laravelが要求しているファイルを受け付けていません

<form accept-charset="utf-8" name="gallery" method="POST" action="/gallery"> 
    <input type="hidden" name="_token" value="fQ7arteCHmBFVfvQARWxxK3dXNgUJF40FdsaD3R"> 
    <label class="btn btn-default"> 
     Browse <input type="file" name="gallery[]" hidden multiple> 
    </label> 
</form> 

私はXdebugをして、それをトレースしていると私は$request->galleryは、ファイル名の配列を示しているが、ファイル数はまだゼロであることがわかります。

if (!$request->files->count()) { 
    return redirect()->back()->with('error', 'Empty file list.'); 
} 

PHPのグローバル変数$_FILESも空です。

これはAJAX上でDropzone.jsのようなものを使用して送信したときに問題なく動作しますが、標準のHTML5フォーム要素を使用すると機能しません。

ここに明白なものがありません。

+4

フォームで – Demonyowh

+0

フォームに 'enctype'を追加する' 'のenctype = "multipart/form-data" を追加し、ファイルをアップロードすることができますが、今Laravelはsymfonyの'でそれらをラップしています\ Component \ HttpFoundation \ File \ UploadedFile'の代わりに 'Illuminate \ Http \ UploadedFile'を使用します。それが間違ったラッパークラスを使用している理由は何ですか? – eComEvo

+1

これを試してください。$ files = $ request-> gallery;その内容を確認してください – Demonyowh

答えて

1
<form accept-charset="utf-8" enctype="multipart/form-data" name="gallery" method="POST" action="/gallery"> 
<input type="hidden" name="_token" value="fQ7arteCHmBFVfvQARWxxK3dXNgUJF40FdsaD3R"> 
<label class="btn btn-default"> 
    Browse <input type="file" name="gallery[]" hidden multiple> 
</label> 

他と前記CSRFを忘れていないようにあなたは、あなたのフォーム

0

enctype=multipart/form-dataが欠落しています。 (デフォルト:オン)

<form method="POST" action="/profile"> 
    {{ csrf_field() }} 
    ... 
</form> 
関連する問題