Je suis un nouveau développeur qui travaille dans une entreprise sur un site Web. Nous avons un bug avec l'importation de fichiers Excel, il n'accepte pas xls comme une extension valide, mais xlsx et d'autres sont acceptés. Voici la méthode qui donne l'erreur.Impossible d'importer .xls - PHP Symfony
fonction publique orderAddUpload (Demande $ 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));
}
Pour autant que je peux dire, lorsque je tente d'importer un fichier xls, il retourne l'extension NULL au lieu comme xls et lève l'exception » file.invalid.extension '.
Je ne comprends pas pourquoi cela se passe parce que xls est l'un des exentions définis comme valides dans le tableau de valid_ext de $. Toutes les autres extensions de ce tableau sont importées sans problème. J'ai creusé dans la méthode guessExtension et plus loin dans guessMimeType qu'il utilise, mais tout semble fonctionner correctement dans ceux-ci. Lorsque je commente Exception'file.invalid.extension 'et que j'essaie d'importer le fichier xls, l'erreur que je reçois me dit que la colonne du type de fichier ne peut pas être NULL, quelque chose à voir avec SQL.
Si quelqu'un sait quelque chose sur ce type de problème s'il vous plaît laissez-moi savoir, merci!
Merci pour la réponse. J'aurais dû mentionner que j'ai déjà essayé getExtension et j'ai malheureusement eu les mêmes résultats. –