Saltar al contenido

Validador de Laravel y error de archivos de Excel

Solución:

Ok, culpa mía. Probé otra solución, la encontré en este sitio web y funcionó. Gracias por ayudar Odin. Fue mi primera pregunta en este sitio web. Veré si puedo ayudar a alguien ahora. Publico código de solución para alguien que lo necesite :).

$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',
  ]
);

Utilice “mimos” cuando desee escribir extensiones (xlsx, doc, docx). En caso de que use mime-type como aplicación / vnd.ms-excel debe usar la regla de validación mimetype

Más tipos de mímica: más tipos de mímica

$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'
]);

Así es como lo hice en Laravel 6 comprobando la extensión del archivo.

Cree una nueva regla de validación:

php artisan make:rule ExcelRule

Aquí está el ExcelRule, que comprueba la extensión del archivo:

namespace AppRules;

use IlluminateContractsValidationRule;
use IlluminateHttpUploadedFile;

class ExcelRule implements Rule
{
    private $file;

    public function __construct(UploadedFile $file)
    {
        $this->file = $file;
    }

    public function passes($attribute, $value)
    {
        $extension = strtolower($this->file->getClientOriginalExtension());

        return in_array($extension, ['csv', 'xls', 'xlsx']);
    }

    public function message()
    {
        return 'The excel file must be a file of type: csv, xls, xlsx.';
    }
}

Como puede ver, estoy buscando csv, xls, o xlsx aquí. Puede agregar las extensiones adicionales que desee.

Usándolo en un controlador:

public function uploadExcelFile(Request $request)
{
    $request->validate([
        'excel_file' => ['required', new ExcelRule($request->file('excel_file'))],
    ]);

    $model->update([
        'excel_file' => $request->file('excel_file')->store('excel_files'),
    ]);

    return redirect()->route('my_route_name')->with('Excel file uploaded!');
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *