Загрузка нескольких файлов Laravel 5,8 - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу загрузить несколько файлов в Laravel, но это не работает. Я попытался в своем контроллере. Редактировать: я имею в виду refre страницы sh, но нет ошибок или зарегистрированных данных в БД, за которыми я следовал https://www.youtube.com/watch?v=wk5usyevYj0

public function storescan(Request $request){


          $this->validate($request,[
          'file' => 'required|file|mimes:gif,jpg,png,jpge,jpeg|max:102048'
        ]);


       $files=$request->file('file');
          foreach($files as $file){
            Document::create([
              'doc'=>$file->getClientOriginalName(),
              'path'=>$file->store('public/storage'),
              'support'=>$request->input('support'),
              'ecole'=>$request->input('ecole'),
              'jour'=>$request->input('jour'),
              'cycle'=>$request->input('cycle'),
              'type'=>'Image',
              'niveau'=>$request->input('niveau'),
              'matiere'=>$request->input('matiere'),
              'user_id'=>Auth::user()->id 
            ]);
          }  
        return redirect()->route('prof.document.create')->withMessage('✅ Image(s) ajoutée(s) avec succès!');

      }

А вот мой маршрут и формула

 Route::post('/professeur/myDoccy/scan/create','DocumentController@storescan')->name('prof.document.createscan');

Формула все правильно Я свернул код и оставил только входной файл

 <form enctype="multipart/form-data" class="form"  action="{{ route('prof.document.createscan') }}" method="POST">
           <input type="hidden" name="_token" value="{{ csrf_token() }}">
           {{ csrf_field() }}

 <label class="purple" >Charger l’image </label><br/>
            <input  required type="file" multiple name="file[]" accept='image/*' class="form-control-file border-or m-1" >
          </div>
</form>

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Вам следует проверить переменную $ errors (подробнее https://laravel.com/docs/5.8/validation).

У вас проблема с проверкой. У вас есть правило

'file' => 'required|file|mimes:gif,jpg,png,jpge,jpeg|max:102048'

Но оно будет работать для одного файла. У вас их несколько, поэтому оно должно быть:

'file.*' => 'required|file|mimes:gif,jpg,png,jpge,jpeg|max:102048'

Также вы можете использовать правило "image" вместо файла со всеми mimes.

0 голосов
/ 12 апреля 2020

Я решил проблему, удалив проверяемую часть и добавив все атрибуты, которые можно заполнить в моей модели, но все еще не имея возможности проверки

class Document extends Model
{

    use SoftDeletes;

    public function user(){
        return $this->belongsTo('App\User');
    }

    protected $fillable = [
        'doc','support','ecole',
              'path',
              'jour',
              'cycle',
              'type',
              'niveau',
              'matiere',
              'user_id'
    ];
}

функция

public function storescan(Request $request){

       $files=$request->file('file');
          foreach($files as $file){
            Document::create([
              'doc'=>$file->getClientOriginalName(),
              'path'=>$file->store('public/storage'),
              'support'=>$request->input('support'),
              'ecole'=>$request->input('ecole'),
              'jour'=>$request->input('jour'),
              'cycle'=>$request->input('cycle'),
              'type'=>'Image',
              'niveau'=>$request->input('niveau'),
              'matiere'=>$request->input('matiere'),
              'user_id'=>Auth::user()->id 
            ]);
          }  
        return redirect()->route('prof.document.create')->withMessage('✅ Image(s) ajoutée(s) avec succès!');

      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...