【发布时间】:2021-08-24 13:37:00
【问题描述】:
我在将原始文件名存储在数据库和磁盘存储中时遇到问题。该文件在数据库和 Nova 后端中正确保存,但在磁盘存储中只是另存为随机字符串。
在数据库中:my-user-friendly-file-name.pdf
在磁盘存储中:kfnakfncanjnaskdmkasniodanwjioeocniosandoaisndcacs.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);
}),
有没有人遇到过类似的问题?
【问题讨论】:
-
别管它。故意这样,以避免用相同的文件名覆盖其他人的上传。没有理由担心它的存储名称。
-
我剩下的所有其他带有文件上传的模型,但这是用于控制电子邮件附件,我想要更人性化的附件名称。
-
你仍然可以这样做。将原始名称存储在不同的列中。在您的 Mailable 中,
->attach('/path/to/file', ['as' => $foo->original_name])。见laravel.com/docs/8.x/mail#attachments。 -
太棒了!我将添加另一列并研究该解决方案。
标签: php laravel laravel-nova