我有文件上传在我的控制器,需要添加碳到我的文件的结束,所以我可以把它插入到数据库中作为唯一的。我是这样做的
$upload->title = Auth::User()->id;
$current = Carbon::now();
$file = $request->file('file');
$file->move(storage_path(). '/', $file->getClientOriginalName());
$upload->name = $file->getClientOriginalName().$current;
}
我的问题是,当它显示给用户我如何删除它,以便用户只看到文件的原始名称(与php我可以做到这一点,但我想使用"laravel方式")
您不能将Carbon::now()
添加到文件名中,因为在某些文件系统中它具有:
,因此请执行以下操作:
$current = time(); // Will output something like 1478529571
或者如果文件名不同,您只想添加日期:
$current = date('Ymd'); // Will output something like 20161107.
或者,如果你想使用Carbon:
$current = Carbon::now()->format('YmdHs'); // WIll output something like 201611071419
正如Alexey所说,Carbon::now()返回一个对象,但是__toString()魔术方法在将其转换为字符串时将导致YYYY-MM-DD HH:MM:SS
格式。对我来说,这似乎是一个糟糕的文件名格式,unix时间戳会更好。
继续,如果您希望像这样存储文件,存储两列不是很有意义吗?
Filename | Timestamp
---------------------
OriginalFileName | 123456789
在文件系统中将其保存为OriginalFileName.123456789
,但将其显示为OriginalFileName
,不需要进行字符串操作。
我想你会发现大多数人在存储文件系统时甚至不使用原始文件名,他们只是生成一个唯一的哈希并将其与原始文件名一起存储在数据库中。