【发布时间】:2018-03-23 13:11:23
【问题描述】:
我正在使用Laravel Backpack image Field Type 文档上传图片。
在他们的 mutator 示例中,他们使用 md5 文件名,但是我想在存储文件时使用原始文件名。
// if a base64 was sent, store it in the db
if (starts_with($value, 'data:image'))
{
// 1. Make the image
$image = \Image::make($value);
// 2. Generate a filename.
$filename = md5($value.time()).'.jpg';
// 3. Store the image on disk.
\Storage::disk($disk)->put($destination_path.'/'.$filename, $image->stream());
// 4. Save the path to the database
$this->attributes[$attribute_name] = $destination_path.'/'.$filename;
}
我知道我需要修改第 2 步,但不完全确定如何修改,我觉得我可能需要修改第 1 步。
附加问题只是为了帮助我理解:第一步“\Image::...”中的“\”是什么
【问题讨论】:
-
为什么?您不应使用原始文件名。你会遇到各种各样的问题,比如多个用户上传
test.jpg,名字带有你的服务器不喜欢的奇怪字符等等。 -
基本没有原始文件名,因为背包本身不上传图片,文件内容为base64
-
@ceejayoz 本项目不会有多次上传,名称为标准字符
-
是否有替代 base64 上传 @Danny 的方法?
-
即使你能以某种方式完美地防止重复文件名,为什么你觉得你需要这个?