我是一位在網站上的公司工作的新開發人員。我們有一個導入excel文件的錯誤,它不接受xls作爲有效的擴展,但是xlsx和其他文件被接受。這是給出錯誤的方法。無法導入.xls - Symfony PHP
公共職能orderAddUpload(請求$要求){
/*
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數組中定義爲有效的exentions之一。該數組中的所有其他擴展都可以毫無問題地導入。我挖掘出guessExtension方法,並進一步在guessMimeType中使用它,但是在這些方面似乎一切正常。
當我註釋掉Exception'file.invalid.extension'並嘗試導入xls文件時,我得到的錯誤告訴我文件類型列不能爲NULL,與SQL有關。
如果有人知道這種類型的問題,請讓我知道,謝謝!
感謝您的回覆。我應該提到我已經嘗試過getExtension,並且不幸得到了相同的結果。 –