laravel - 将文件上传到模型 ID 子目录
问题描述
我正在 Nova 中创建健身练习,并使用本机文件和图像字段来处理上传。但是,我希望将文件存储在具有模型 ID 的子目录中:
- public
- media
- {id}
- video.mp4
- image.jpeg
这在更新现有模型(ID 已经可用)时可以正常工作,但文件会上传到public/media
新练习的基本上传路径。这意味着模型 ID 在文件上传期间尚不可用。
是否有可能以任何其他方式实现这一目标?你会怎么做,例如:
- 你能以某种方式排队上传(这对管理员来说也有好处)?排队的任务应该能够访问模型 ID,对吧?但是在 Nova 中找不到任何关于队列的文档。
- 监听
created
事件、获取 ID、创建目录、移动文件和更新数据库字段?听起来可行,但相当多的额外工作。 - 为媒体文件编写自定义
store
程序并在那里处理?它会在模型创建后运行还是在将其保存到数据库之前运行,因此没有可用的 ID? - 只需用一些可以预先生成并附加到路径的唯一字符串替换 ID?您将如何存储它以便后续编辑可以访问它?每次从保存的媒体文件路径中获取它还是作为单独的字段存储在数据库中?
我是 Laravel 和 Nova 的新手,还不知道最佳实践。对此有任何帮助/建议将不胜感激。
解决方案
推荐阅读
- python - 有没有办法可以使用 selenium 将网站文本保存到计算机上的 word 文件中?
- android - RecyclerView 中的多个 YouTubePlayer
- html - 是否可以从特定类中选择所有兄弟 div 到下一个?
- ruby - 不带括号的方法调用不会转发所有参数,而带括号的方法调用则不带任何参数进行初始化
- python - 使用 celery-beat 完成上一个任务后,如何在 5 分钟内运行任务?
- javascript - 做出反应。点击更改图片
- angular - 在 IIS 中部署 Okta 的 Angular
- node.js - 如何在不同的 NestJS 模块中引用 Mongoose 模型
- c - 通过 UDP 套接字向 DNS 服务器发送请求
- jquery - 如何在我的图片库中包含带有正确动态文本的按钮