php - Laravel Nova 将原始文件名存储在数据库和本地存储中
问题描述
我在将原始文件名存储在数据库和磁盘存储中时遇到问题。该文件正确保存在数据库和 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);
}),
有没有人遇到过类似的问题?
解决方案
因此,正如@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]);
推荐阅读
- sql - 如何在 Google BigQuery 中使用 UNNEST 函数获取 COUNT?
- mongodb - 考虑到 mongo db 性能,更新一组文档的最佳方法是什么
- pyspark - 将大数组列拆分为多列 - Pyspark
- java - 如何在 ExtentReports 中添加跳过的测试用例?
- xslt - 无法解析 javax.xml.transform.dom
- scala - 如何从 Scala 中的原始数据帧中提取子集 Spark 数据帧?
- vba - 错误“1004”无法打开文件,因为其格式或扩展名无效
- swift - 毫秒到完整日期在我的时区返回错误的日期
- php - 每个页面的 Html 主题
- c++ - 使用 system() 创建独立的子进程