我已经使用了Input::file('upfile')->getClientOriginalName()
获取上传文件的名称,但它会返回带有扩展名的名称,例如qwe.jpg
。在Laravel中,如何获取不带扩展名的名称,例如qwe
。
Laravel使用Symfony UploadedFile
组件,该组件将由Input::file()
方法返回。
它没有任何获取文件名的方法,因此您可以使用php原生函数pathinfo()
:
pathinfo(Input::file('upfile')->getClientOriginalName(), PATHINFO_FILENAME);
你可以尝试这个
$file = Input::file('upfile')->getClientOriginalName();
$filename = pathinfo($file, PATHINFO_FILENAME);
$extension = pathinfo($file, PATHINFO_EXTENSION);
echo $filename . ' ' . $extension; // 'qwe jpg'
在 Laravel 5.2 中
使用 Request,它已经存在于 app 文件中的 aliases 数组中
要获取原始文件名
$request->file('upfile')->getClientOriginalName();
获取不带扩展名的文件名basename($request->file('upfile')->getClientOriginalName(), '.'.$request->file('upfile')->getClientOriginalExtension());
这个相当干净:
$fileName = pathinfo($fullFileName)['filename'];
等同于:
$fileName = pathinfo($fullFileName, PATHINFO_FILENAME);
这里需要调用 PHP 的 PATHINFO_FILENAME。
$file = $request->file('fileupload')->getClientOriginalName();
$fileName = pathinfo($file,PATHINFO_FILENAME);
dd($fileName);
basename
方法将返回给定字符串的尾部名称组件。use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz.jpg')->basename();
// 'baz.jpg'
如有必要,您可以提供一个“扩展名”,该扩展名将从尾部组件中删除:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz.jpg')->basename('.jpg');
// 'baz'
if ($request->hasfile('filename')) {
$image = $request->filename;
$namewithextension = $image->getClientOriginalName(); //Name with extension 'filename.jpg'
$name = explode('.', $namewithextension)[0]; // Filename 'filename'
$extension = $image->getClientOriginalExtension(); //Extension 'jpg'
$uploadname = time() . '.' . $extension;
$image->move(public_path() . '/uploads/', $uploadname);
}
natural.picture.png
,那么name
将返回为natural,并且最终将使用time()
保存文件。 - Rio A.P我在 Laravel 5.2.* 中使用这段代码并成功运行:
$file=$request->file('imagefile');
$imgrealpath= $file->getRealPath();
$nameonly=preg_replace('/\..+$/', '', $file->getClientOriginalName());
$fullname=$nameonly.'.'.$file->getClientOriginalExtension();
使用getClientOriginalName()函数获取文件名;然后使用explode函数获取名称和图像格式,如下所示:
$image=Input::file('image');
$fullName=$image->getClientOriginalName();
$name=explode('.',$fullName)[0];
试试这个:
$fullName = Input::file('image')->getClientOrginalName();
$extension = Input::file('image')->getClientOrginalExtension();
$onlyName = explode('.'.$extension,$fullName);
$fullName = Input::file('image')->getClientOrginalName();
$extension = Input::file('image')->getClientOrginalExtension();
$fullNameLenght = strlen($fullName);
$extensionLenght = strlen($extension);
$nameLength = $fullNameLenght - ($extensionLength + 1);
$onlyName = strpos($fullName, 0, $nameLength);