【问题标题】:Laravel 5.2 pdf mime type validation issueLaravel 5.2 pdf mime 类型验证问题
【发布时间】:2016-05-28 01:12:13
【问题描述】:

我无法验证 pdf 附件(多),laravel 5.2。验证规则是这样的:

namespace App\Http\Requests;

class UploadRequest extends Request
{    
   public function rules()
   {   
    return [
                'attachments'=> 'required|mimes:pdf',
           ];
   }
}

namespace App\Http\Requests;

class UploadRequest extends Request
{    
   public function rules()
   {
    return [
                'attachments'=> 'required|mimetypes:application/pdf',
           ];
   }
}

我正在按照documentation 中的建议进行操作。它使所有附件类型无效。

编辑

当我解决这个问题时,我必须添加自定义验证方法

namespace App\Http\Requests;

use Illuminate\Validation\Factory as ValidationFactory;

class UploadRequest extends Request
{    

    public function __construct(ValidationFactory $validationFactory)
    {
       $validationFactory->extend(
           'pdf',
           function ($attribute, $files, $parameters) {

               if(is_array($files)){
                   foreach($files as $file){
                       if($file->getMimeType()!='application/pdf'){
                           return false ;
                       }
                   }
               }else
                   return $files->getMimeType()=='application/pdf';
               return true;
           },
           'File is not a pdf document'
       );


    }

    public function rules()
    {
        return [
                    'attachments'=> 'required|pdf',
               ];
    }

   }

【问题讨论】:

  • 规则没有错,你一定是在代码的更高层做错了什么。
  • @fire 你可能是对的 :)

标签: php laravel laravel-5.2


【解决方案1】:

您可以使用'attachments.*' => 'required|mimes:pdf',

* 字符可用于validating arrays(此处为多个附件)。

【讨论】:

    【解决方案2】:
    use Validator;
    
    class AppServiceProvider extends ServiceProvider
    {
    public function boot()
        {
            Validator::extend('pdf', function($attribute, $value, $parameters) {
                $allowed_mimes = [
                    'application/pdf', // pdf
                ];
                return in_array($value->getMimeType(), $allowed_mimes);
            });
        }
    
    // and in the NewsletterRequest:
    public function rules()
        {
            return [
                'pdf_file' => 'pdf',
            ];
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 2016-08-16
      • 2016-08-05
      • 2017-03-07
      • 2017-06-23
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多