簡體   English   中英

在laravel中獲取沒有擴展名的文件名?

[英]get file name without extension in laravel?

我已經使用Input::file('upfile')->getClientOriginalName()來檢索上傳文件的名稱,但給出的名稱帶有像qwe.jpg這樣的擴展名。 qwe在 laravel 中獲得像qwe.jpg這樣沒有擴展名的名稱。

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 並且它已經存在於別名數組中的應用程序文件中

檢索原始文件名

$request->file('upfile')->getClientOriginalName();

獲取沒有擴展名的文件名

basename($request->file('upfile')->getClientOriginalName(), '.'.$request->file('upfile')->getClientOriginalExtension());

這個很干凈:

  $fileName = pathinfo($fullFileName)['filename'];

相當於:

  $fileName = pathinfo($fullFileName, PATHINFO_FILENAME);

https://php.net/manual/en/function.pathinfo.php

在這里你需要調用 php PATHINFO_FILENAME

$file = $request->file('fileupload')->getClientOriginalName();
$fileName = pathinfo($file,PATHINFO_FILENAME);
dd($fileName);

在 Laravel 7 中引入了 Fluent Strings,它允許以一種非常優雅的方式做到這一點。

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'

我使用此代碼並在我的 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);

您也可以使用此代碼。

    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);
    }
preg_replace('/\..+$/', '', 'qwe.jpg')

或者

explode('.', 'qwe.jpg')[0]

我已經使用Input::file('upfile')->getClientOriginalName()來檢索上傳的文件名,但給的名稱與擴展像qwe.jpg 。怎么做我不喜歡的擴展名獲得qwe在laravel。

你可以用這個

Input::file('upfile')->getClientOriginalExtension()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM