私はウェブサイト上のある会社で働いている新しい開発者です。エクセルファイルをインポートする際にバグがありますが、有効なエクステンションとして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配列で有効と定義されているため、なぜこのようなことが起こっているのかわかりません。その配列内の他のすべての拡張は、問題なくインポートされます。私はguessExtensionメソッドと、それが使用するguessMimeTypeをさらに掘り出しましたが、すべてがそれらでうまくいくようです。
Exception'file.invalid.extension 'をコメントアウトしてxlsファイルをインポートしようとすると、ファイルタイプの列がSQLと関係があるとは限りません。
このタイプの問題について誰もが知っている場合は、教えてください、ありがとう!
ありがとうございます。私はすでにgetExtensionも試してみたが、残念なことに同じ結果を得たということを述べておきたい。 –