Php Laravel Nova将原始文件名存储在数据库和本地存储器中
我在数据库和磁盘存储中存储原始文件名时遇到问题。该文件正确地保存在数据库和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
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])
。看,太好了!我将添加另一个专栏并研究该解决方案。