Carbon laravel 添加到文件名

Carbon laravel adding to file name

我的控制器中有文件上传,需要在我的文件末尾添加碳,以便我可以将其作为唯一文件插入到数据库中。我是这样做的

        $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 way")

您不能将 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() returns 一个对象,但是 __toString() 魔术方法在将其转换为 YYYY-MM-DD HH:MM:SS 格式时会产生一个细绳。对我来说,这似乎是一种错误的文件名格式,而 unix 时间戳会好得多。

继续,如果你想像这样存储文件,存储两列不是很有意义吗?

Filename | Timestamp
---------------------
OriginalFileName | 123456789

在文件系统中将其保存为 OriginalFileName.123456789,但将其作为 OriginalFileName 显示给客户端,无需进行字符串操作。

我想你会发现大多数人在将文件存储到文件系统时甚至不使用原始文件名,他们只是生成一个唯一的哈希并将其与原始文件名一起存储在数据库中。