如何从存储方法中获取上传的图片名称
How to get the uploaded image name from the store method
当我通过以下操作将图像存储在 Laravel 中时:
$path = $request->file('myImage')->store('public/src/');
它 returns 是完整路径,但我如何才能只获取给定的文件名?
这是返回路径的示例:
public/src/ltX4COwEmvxVqX4Lol81qfJZuPTrQO6S2jsicuyp.png
在Laravel中,store()
方法动态生成名称..所以你不能从store()
方法中得到它。
但是你可以使用storeAs()
方法。基本上 store()
方法调用 storeAs()
方法。所以:
$path = $request->file('myImage')->store('public/src');
Laravel 正在调用 ->storeAs('public/src', $request->file('myImage')->hashName());
.. 你看到 hashName()
方法了吗?这就是生成名称的原因。
所以你可以先打电话给 hashName()
并在存储发生之前知道你的名字..这是一个例子:
$uploadFile = $request->file('myImage');
$file_name = $uploadFile->hashName();
$path = $uploadFile->storeAs('public/src', $file_name);
现在你有 $file_name
和 $path
。
参见:
在这里,你可以试试这个。
$fileNameWithExt = $request->file('myImage')->getClientOriginalName();
$fileNameWithExt = str_replace(" ", "_", $fileNameWithExt);
$filename = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
$filename = preg_replace("/[^a-zA-Z0-9\s]/", "", $filename);
$filename = urlencode($filename);
$extension = $request->file('myImage')->getClientOriginalExtension();
$fileNameToStore = $filename.'_'.time().'.'.$extension;
$path = $request->file('myImage')->storeAs('public/src/',$fileNameToStore);
return $fileNameToStore;
您将在 $fileNameToStore 中获取您存储的文件名。
此外,所有空格都将替换为“_”,您将获得带有当前时间的存储文件名,这将帮助您区分两个同名文件。
由于 $path
returns 保存文件的完整路径,它包含其生成的名称。
你只需要解析这个字符串:
$extension = explode('/', $path);
$filename = end($extension)
这会给你 ltX4COwEmvxVqX4Lol81qfJZuPTrQO6S2jsicuyp.png
当我通过以下操作将图像存储在 Laravel 中时:
$path = $request->file('myImage')->store('public/src/');
它 returns 是完整路径,但我如何才能只获取给定的文件名?
这是返回路径的示例:
public/src/ltX4COwEmvxVqX4Lol81qfJZuPTrQO6S2jsicuyp.png
在Laravel中,store()
方法动态生成名称..所以你不能从store()
方法中得到它。
但是你可以使用storeAs()
方法。基本上 store()
方法调用 storeAs()
方法。所以:
$path = $request->file('myImage')->store('public/src');
Laravel 正在调用 ->storeAs('public/src', $request->file('myImage')->hashName());
.. 你看到 hashName()
方法了吗?这就是生成名称的原因。
所以你可以先打电话给 hashName()
并在存储发生之前知道你的名字..这是一个例子:
$uploadFile = $request->file('myImage');
$file_name = $uploadFile->hashName();
$path = $uploadFile->storeAs('public/src', $file_name);
现在你有 $file_name
和 $path
。
参见:
在这里,你可以试试这个。
$fileNameWithExt = $request->file('myImage')->getClientOriginalName();
$fileNameWithExt = str_replace(" ", "_", $fileNameWithExt);
$filename = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
$filename = preg_replace("/[^a-zA-Z0-9\s]/", "", $filename);
$filename = urlencode($filename);
$extension = $request->file('myImage')->getClientOriginalExtension();
$fileNameToStore = $filename.'_'.time().'.'.$extension;
$path = $request->file('myImage')->storeAs('public/src/',$fileNameToStore);
return $fileNameToStore;
您将在 $fileNameToStore 中获取您存储的文件名。 此外,所有空格都将替换为“_”,您将获得带有当前时间的存储文件名,这将帮助您区分两个同名文件。
由于 $path
returns 保存文件的完整路径,它包含其生成的名称。
你只需要解析这个字符串:
$extension = explode('/', $path);
$filename = end($extension)
这会给你 ltX4COwEmvxVqX4Lol81qfJZuPTrQO6S2jsicuyp.png