проверка изображения в частично рабочем состоянии - PullRequest
0 голосов
/ 08 октября 2018

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

Я новичок в Laravel.исходя из фона PHP.Я использую код ниже для проверки изображения в Laravel 5.7.8.это делает проверку, проверяя имя расширения файла, размер и т. д. Теперь я хочу проверить mimetype как способ обеспечения загрузки файла, поэтому код

        $rules= [
             'file' => 'mimes:jpeg,bmp,png,gif'
        ];
        $x = $request->all();
        $validator=Validator::make($x, $rules);
        if ($validator->passes()){

 Session::flash('message','File Uploads successful.');
        }else{
         Session::flash('message','Invalid File type .');

        }

Моя проблема в том, что он не возвращает сообщение об ошибке, например Неверный тип файла при загрузке неверного файла.

Ниже описано, как я добавил его в свой главный контроллер.Все остальные проверки в порядке.Я просто хочу, чтобы код печатал Неверный тип файла всякий раз, когда загружается файл, который не является изображением

<?php

namespace App\Http\Controllers;

use Session;
use Validator;
use Illuminate\Http\Request;

class PictureController extends Controller{

   public function picture(){
     return view('picture');
   }

   public function uploadFile(Request $request){

     if ($request->input('submit') != null ){

        $file = $request->file('file');

        // File Details
        $filename = $file->getClientOriginalName();
        $extension = $file->getClientOriginalExtension();
        $tempPath = $file->getRealPath();
        $fileSize = $file->getSize();
        $mimeType = $file->getMimeType();

 //dd($mimeType = $file->getMimeType());


        // Valid File Extensions
        $valid_extension = array("jpg","jpeg","png");



//validate files uploads mimetype

        $rules= [
             'file' => 'mimes:jpeg,bmp,png,gif'
        ];
        $x = $request->all();
        $validator=Validator::make($x, $rules);





 // 2MB in Bytes
 $maxFileSize = 2097152;

        // Check file extension
        if(in_array(strtolower($extension),$valid_extension)){

      // validate mimetype
        if ($validator->passes()){

          // Check file size
          if($fileSize <= $maxFileSize){

             // File upload location
             $location = 'images';

             // Upload file
             $file->move($location,$filename);

             Session::flash('message','Upload Successful.');
          }else{
             Session::flash('message','File too large. File must be less than 2MB.');
          }
//validator starts
}else{
 Session::flash('message','Invalid File type');
}
//validator ends
        }else{
           Session::flash('message','Invalid File Extension1.');
        }

      }

      // Redirect to index
      return redirect()->action('PictureController@picture');
   }
}

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Моя проблема с этим - способ, которым я возвращал ответный вызов сеанса флэш-памяти.Если я повторяю ответное сообщение с функцией dd() согласно dd(....), это работает, следовательно, это работает сейчас.Поскольку я работал с angularjs, я теперь возвращаю ответ сервера как вызов json, и он работает нормально ... Спасибо

$rules= [
             'file' => 'mimes:jpeg,bmp,png,gif'
        ];
        $x = $request->all();
        $validator=Validator::make($x, $rules);
        if ($validator->passes()){

dd('File Uploads successful.');
        }else{
         dd('Invalid File type .');

        }
0 голосов
/ 08 октября 2018

попробуйте это:

            $validate = $request->validate([
            'file' => 'mimes:jpeg,bmp,png,gif'
            ]);

вместо:

        $rules= [
         'file' => 'mimes:jpeg,bmp,png,gif'
    ];
    $x = $request->all();
    $validator=Validator::make($x, $rules);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...