【发布时间】:2014-11-06 20:12:29
【问题描述】:
我正在用 PHP(Laravel 4 框架)构建一个应用程序,他们帐户中的老师可以为学生创建数字课程。数字课程可以包含以下内容:
- 文本(来自表单、.doc、.txt、.pdf 等的文本)
- 图片(.gif、.png、.jpg 等)
- 视频(.avi、.mov、.mp4 等)
- 音频(.mp3 等)
从表单输入的原始文本显然可以根据课程 ID 存储在数据库中。所有其他内容格式都需要存储在某个地方,在那里我可以管理和读取文件,并跟踪教师的存储总量,因为我计划按 5GB、10GB 等存储阈值计费。
在创建课程页面,需要在保存课程之前将内容文件作为课程附件上传,以便教师可以直观地看到所有课程内容,然后点击保存立即创建课程。
这是我想出的:
在创建课程之前,将所有课程文件附件上传到 AWS S3 到教师专用存储桶。在每个文件名中添加教师 ID 和日期时间。
如果上传的所有视频/音频文件不是 iDevice 友好格式或超过文件大小限制,则强制将其转换为 .mp4、.mp3 等。使用 FFmpeg 执行此操作。
保存和创建课程后,将 S3 文件 URL 与数据库中的课程 ID 记录下来。
如果在特定时间段后仍未创建课程,请运行 cron 作业以检查上传的没有课程的 S3 文件并将其删除。
我不确定解决此问题的最佳方法是什么,因为用户上传的内容管理对我来说真的很陌生。
您如何看待这种方法?您能推荐一种改进或更好的方法来解决这个问题吗?
【问题讨论】:
-
我不会通过操作文件名来管理文件,而是为文件创建一个新表,用于存储它们的 URL、它们属于哪个课程、它们的大小以及您想要的任何其他信息需要。这样,教师基本上可以共享文件,以及更容易从表格中收集信息,而不是自己检查文件。教师也可以在他们的课程中保存非现场文件,这样他们就不会占用太多空间。
标签: php video amazon-s3 ffmpeg laravel-4