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!');
}