Symfony2 を介してファイルをアップロードしていますが、同じファイルの上書きを避けるためにオリジナルの名前を変更しようとしています。これは私がやっていることです:
$uploadedFile = $request->files;
$uploadPath = $this->container->getParameter('kernel.root_dir') . '/../web/uploads/';
try {
$uploadedFile->get('avatar')->move($uploadPath, $uploadedFile->get('avatar')->getClientOriginalName());
} catch (\ Exception $e) {
// set error 'can not upload avatar file'
}
// this get right filename
$avatarName = $uploadedFile->get('avatar')->getClientOriginalName();
// this get wrong extension meaning empty, why?
$avatarExt = $uploadedFile->get('avatar')->getExtension();
$resource = fopen($uploadPath . $uploadedFile->get('avatar')->getClientOriginalName(), 'r');
unlink($uploadPath . $uploadedFile->get('avatar')->getClientOriginalName());
次のようにファイルの名前を変更しています。
$avatarName = sptrinf("%s.%s", uniqid(), $uploadedFile->get('avatar')->getExtension());
しかし$uploadedFile->get('avatar')->getExtension()
、アップロードされたファイルの拡張子を教えてくれないので、拡張子jdsfhnhjsdf.
なしのように間違ったファイル名を付けます。なぜですか? 最後のパスに移動した後または移動する前にファイルの名前を変更する正しい方法は何ですか? 何かアドバイス?