Php Laravel Nova将原始文件名存储在数据库和本地存储器中

Php Laravel Nova将原始文件名存储在数据库和本地存储器中,php,laravel,laravel-nova,Php,Laravel,Laravel Nova,我在数据库和磁盘存储中存储原始文件名时遇到问题。该文件正确地保存在数据库和Nova后端中,但在磁盘存储中仅保存为随机字符串 在数据库中:my user-friendly file name.pdf 在磁盘存储器中:kfnakfncanjnaskdmkasniodanwjioecniosandoaisndcacs.pdf 我已经遵循了文档,下面的代码似乎应该可以工作,但它没有 File::make('Attachment PDF Upload', 'attachment_url') -&g

我在数据库和磁盘存储中存储原始文件名时遇到问题。该文件正确地保存在数据库和Nova后端中,但在磁盘存储中仅保存为随机字符串

在数据库中:
my user-friendly file name.pdf

在磁盘存储器中:
kfnakfncanjnaskdmkasniodanwjioecniosandoaisndcacs.pdf

我已经遵循了文档,下面的代码似乎应该可以工作,但它没有

File::make('Attachment PDF Upload', 'attachment_url')
    ->rules('file')
    ->disk('attachments')
    ->storeOriginalName('attachment_url')
    ->storeAs(function(Request $request) {
        return sha1($request->attachment_url->getClientOriginalName()) . '.' . pathinfo($request->attachment_url->getClientOriginalName(), PATHINFO_EXTENSION);
}),

有人遇到过类似的问题吗?

正如@ceejayoz所说,我最终为原始文件名存储了一个额外的列,然后在需要时在代码中调用该列,在我的情况下,通过电子邮件发送附件

File::make('Attachment PDF Upload', 'attachment_url')
    ->store(function (Request $request, $model) {
        return [
            'attachment_url' => $request->attachment_url->store('/', 'attachments'),
            'attachment_original_name' => $request->attachment_url->getClientOriginalName(),
        ];
    }),
然后简单地连接如下:

$message->attach($attachment->attachment_url, ['as' => $attachment->attachment_original_name]); 

别管它了。这样做是有意的,以避免用相同的文件名覆盖其他人的上传。没有理由担心它存储的名称。我留下的所有其他上传文件的型号都是,但这是为了控制电子邮件附件,我想要更人性化的附件名称。你仍然可以这样做。将原始名称存储在其他列中。在您的邮件中,
->附加('/path/to/file',['as'=>$foo->original\u name])
。看,太好了!我将添加另一个专栏并研究该解决方案。