web-dev-qa-db-ja.com

laravel 5.2?

ファイルをアップロードしようとしていますが、リクエストがコントローラーに到達すると失敗します。失敗とは、$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に設定されています...

10
Caius

formenctype="multipart/form-data"を追加するのを忘れたかどうかを確認します

12
Imtiaz Pabel

フォームへのアップロードフォームを有効にする必要があります。

それを行うには2つの方法があります:

  1. HTMLを使用する

    <form action="{{url('dev/tester')}}" method="post" enctype="multipart/form-data">
    
  2. 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"をフォームに追加してみてください。うまくいくはずです。

1
linx