Я - новый разработчик, работающий в компании на веб-сайте. У нас есть ошибка при импорте файлов excel, она не принимает xls как действительное расширение, но xlsx и другие принимаются. Вот метод, который дает ошибку.Невозможно импортировать .xls - Symfony PHP
общественная функция orderAddUpload (Request $ запрос) {
/*
Filepath: /web/uploads/files/{entity_name}/{entity_id}/{filename}
*/
$response = array();
$entity = $request->request->get('upload_entity');
$id = $request->request->get('upload_id');
$user = $this->get('security.context')->getToken()->getUser();
$em = $this->getDoctrine()->getManager();
$valid_ext = array('doc', 'docx', 'xls', 'xlsx', 'pdf', 'txt', 'gif', 'jpg', 'jpeg', 'png');
$file = $request->files->get('files');
if(is_array($file)) $file = reset($file);
try{
if(empty($file)){
throw new Exception($this->get('translator')->trans('upload.failure'), 1);
}
if(! in_array($file->guessExtension(), $valid_ext)){
throw new Exception($this->get('translator')->trans('file.invalid.extension')." (" . $file->guessExtension() . "), ".$this->get('translator')->trans('only')." ".implode(', ', $valid_ext) . " ".$this->get('translator')->trans('are.accepted').".", 2);
}
$upload = new Upload();
$upload
->setFiletype($file->guessExtension())
->setEntityName($entity)
->setEntityId($id)
->setUploader($user);
$name = basename($file->getClientOriginalName(), '.' . $file->getClientOriginalExtension());
$ext = $file->guessExtension();
$counter = 1;
$newname = "{$name}.{$ext}";
while(file_exists($newname)){
$newname = "{$name}_{$counter}.{$ext}";
$counter++;
}
$upload->setFilename($newname);
$file->move($upload->getFilePath(), $upload->getFilename());
$em->persist($upload);
$em->flush();
}catch(Exception $e){
return new Response(json_encode(array('type' => 'error', 'message' => $e->getMessage(),)));
}
$response['code'] = 'uploaded';
return new Response(json_encode($response));
}
Насколько я могу сказать, когда я пытаюсь импортировать файл XLS возвращает расширение как NULL вместо как XLS и бросает исключение» file.invalid.extension.
Я не понимаю, почему это происходит, потому что xls является одним из исключений, определенных как действительные в массиве $ valid_ext. Все остальные расширения в этом массиве импортируются без проблем. Я врывался в метод guessExtension и далее в gtMType, который он использует, но все, кажется, работает отлично.
Когда я комментирую Exception'file.invalid.extension 'и пытаюсь импортировать файл xls, я получаю сообщение о том, что столбец типа файла не может быть NULL, что-то связанное с SQL.
Если кто-нибудь знает что-нибудь об этом типе проблем, пожалуйста, дайте мне знать, спасибо!
Спасибо за ответ. Я должен был упомянуть, что я уже пробовал getExtension, и, к сожалению, получил те же результаты. –