欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Laravel validator and excel files error


I have an input field who allaow peoples to upload files. I want that they can upload, word files like doc, and files like csv,xlsx.

When i try with a .doc no problem at all but when i try with an excel files, the validator fail and say that not the good extension.

Here you can see my code, the two lines of comments was an other solution i have try , and it don't work too :(.

Any help is welcome.

public function postFile(Request $request)
{ //Règle de validation avec les type de fichiers acceptés

 if(isset($request->file)){
//dd($request);
   $validator=Validator::make($request->all(),[
     'file'=>'required|max:50000|mimes:xlsx,doc,docx,ppt,pptx,ods,odt,odp,application/csv,application/excel,
      application/vnd.ms-excel, application/vnd.msexcel,
      text/csv, text/anytext, text/plain, text/x-c,
      text/comma-separated-values,
      inode/x-empty,
      application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  /*  'extension'  => strtolower($request->file->getClientOriginalExtension()),
     'extension'=>'required|in:doc,csv,xlsx,xls,docx,ppt,odt,ods,odp'*/
   ]);
  if ($validator->fails()) {
     return back()
                ->withErrors($validator);
   }
shareimprove this question
 

Use "mimes" when you want to write an extentions (xlsx,doc,docx). In case when use mime-type like application/vnd.ms-excel you must use validation rule mimetype

More mime types: more mime-types

$validator=Validator::make($request->all(),[
 //use this
    'file'=>'required|max:50000|mimes:xlsx,doc,docx,ppt,pptx,ods,odt,odp'
 //or this
    'file'=>'required|max:50000|mimetypes:application/csv,application/excel,
        application/vnd.ms-excel, application/vnd.msexcel,
        text/csv, text/anytext, text/plain, text/x-c,
        text/comma-separated-values,
        inode/x-empty,
        application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
]
shareimprove this answer
 
   
Thanks for answer , but i have already tried this two solutions ; and its the same thing.When i try to upload a .xlsx or a .csv , the validator fail. – Exarkun Feb 7 at 13:45

正确答案
Ok my fault. I had try an other solution find on this website and it work. Thanks for help Odin. It was my first question on this website i gonna see if i can help someone now. I poste code for solution in someone need :).

$validator = Validator::make(
  [
      'file'      => $request->file,
      'extension' => strtolower($request->file->getClientOriginalExtension()),
  ],
  [
      'file'          => 'required',
      'extension'      => 'required|in:doc,csv,xlsx,xls,docx,ppt,odt,ods,odp',
  ]

);

shareimprove this answer
 

First tell that this is not the proper solution. But you can try this.

I've searched also for that and having so much trouble validating excel file and their mimes type is not working for that unfortunately.

if($request->hasFile('file'))
{
   $extension = File::extension($request->file->getClientOriginalName());
   if ($extension == "xlsx" || $extension == "xls" || $extension == "csv") {
      //'Your file is a valid xls or csv file'
   }else {
      //'File is a '.$extension.' file.!! Please upload a valid xls/csv file..!!');
   }
}

in namspace include must use File;

You can validate any file by this way, Thanks.

shareimprove this answer
 
   
I have found a solution you can see the last answer , its work :) – Exarkun Oct 4 at 10:29

来自 https://stackoverflow.com/questions/42089659/laravel-validator-and-excel-files-error

 

普通分类: