ファイルをアップロードしようとしていますが、リクエストがコントローラーに到達すると失敗します。失敗とは、$request->hasFile("filename")
を試しても常にfalseが返されることを意味します。
ビューで指定する必要がある特定のフィールドはありますか?
これはビューのスニペットです:
<body>
<form action="{{url('dev/tester')}}" method="POST">
{{csrf_field()}}
<input type="file" name="file">
<button type="submit">Test</button>
</form>
</body>
これがコントローラです
class Tester extends Controller
{
public function index(Request $request)
{
if($request->hasFile('file'))
{
dd('Got the file');
}
dd('No file');
}
public function testView()
{
return view('tests.file_upload');
}
}
常に「ファイルなし」が返されます。
どんな手掛かり?私はphp.iniをチェックしてサイズ制限があったかどうかを確認しましたが、MAMPのプロのデフォルト設定としてすべて32Mに設定されています...
form
にenctype="multipart/form-data"
を追加するのを忘れたかどうかを確認します
フォームへのアップロードフォームを有効にする必要があります。
それを行うには2つの方法があります:
HTMLを使用する
<form action="{{url('dev/tester')}}" method="post" enctype="multipart/form-data">
laravel Form&HTML( https://laravelcollective.com/docs/5.2/html )を使用して
{!! Form::open( [ 'action' => url( 'dev/tester' ), 'method' => 'post', 'files' => true ] ) !!}
// Your form
{!! Form::close() !!}
これは魅力のように機能するはずです!
enctype="multipart/from-data"
をフォームに追加してみてください。うまくいくはずです。