Ich bin ein neuer Entwickler, der in einem Unternehmen auf einer Website arbeitet. Wir haben einen Fehler beim Importieren von Excel-Dateien, es akzeptiert keine xls als gültige Erweiterung, aber xlsx und andere werden akzeptiert. Hier ist die Methode, die den Fehler gibt.Kann .xls nicht importieren - Symfony PHP
public function orderAddUpload (Request $ 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));
}
Soweit ich das beurteilen kann, wenn ich versuche, eine xls-Datei zu importieren, die Erweiterung als NULL zurückgibt, anstatt als xls und führt den Exception‘ file.invalid.extension '.
Ich verstehe nicht, warum dies geschieht, weil xls eine der Erweiterungen ist, die im $ valid_ext-Array als gültig definiert sind. Alle anderen Erweiterungen in diesem Array werden ohne Probleme importiert. Ich habe mich in die ritualExtension-Methode und weiter in rateMimeType vertieft, die es verwendet, aber alles scheint gut zu funktionieren.
Wenn ich die Exception'file.invalid.extension 'auskommentiere und versuche, die xls-Datei zu importieren, sagt mir der Fehler, dass die Dateitypspalte nicht NULL sein kann, was mit SQL zu tun hat.
Wenn jemand etwas über diese Art von Problem weiß, lass es mich wissen, danke!
Danke für die Antwort. Ich hätte erwähnen sollen, dass ich getExtension bereits versucht habe und leider die gleichen Ergebnisse erzielt habe. –