Javascript 异步上传文件,然后保存相关数据
我正在为用户建立一种上传曲目信息的方法,但我希望像YouTube一样异步完成这项工作 目前有一个API端点Javascript 异步上传文件,然后保存相关数据,javascript,html,ember.js,laravel,upload,Javascript,Html,Ember.js,Laravel,Upload,我正在为用户建立一种上传曲目信息的方法,但我希望像YouTube一样异步完成这项工作 目前有一个API端点tracks,它接受上传文件和所有元数据的POST请求。它处理轨迹,验证所有内容,然后将轨迹路径及其所有元数据保存在数据库中。这工作得很完美,但我很难想出异步实现这一点的方法 用户流将是: 1) 用户选择一个曲目并开始上传 2) 填写元数据的表单显示,用户填写 3) 将跟踪及其元数据上载到端点 问题是元数据表单和文件上载现在是两个独立的实体,现在文件可以在保存元数据之前完成上载,反之亦然。理
tracks
,它接受上传文件和所有元数据的POST请求。它处理轨迹,验证所有内容,然后将轨迹路径及其所有元数据保存在数据库中。这工作得很完美,但我很难想出异步实现这一点的方法
用户流将是:
1) 用户选择一个曲目并开始上传
2) 填写元数据的表单显示,用户填写
3) 将跟踪及其元数据上载到端点
问题是元数据表单和文件上载现在是两个独立的实体,现在文件可以在保存元数据之前完成上载,反之亦然。理想情况下,为了克服这一问题,轨迹和元数据都将以cookie或其他形式保存在浏览器中,直到它们都完成。在这一点上,两者都将被发送到端点,并且不需要在后端进行任何更改。据我所知,没有办法像这样在客户端保存文件。哦,除了文件系统API之外,它几乎已经被弃用了
如果有人对如何做到这一点有任何好的建议,我们将不胜感激。在一个完美的世界里,我希望后端没有任何变化,但可能需要很少的变化。最好不要修改数据库
哦,顺便说一句,我正在使用
laravel
和ember.js
,以防有人知道任何包已经在这样做了 几个月前我就考虑过这个问题
我想出的最接近的解决方案是上传文件,并将其文件名、大小、上传时间(这一点至关重要)和其他属性存储在DB
(与往常一样)。此外,我还添加了列temporary
(更像是一个标志),该列最初设置为TRUE
,只有在您发送元数据之后,它才会被否定
另外,我设置了cron
作业(我使用了Symfony2
,但在Laravel
中是一样的),它将每15-30分钟运行一次,并删除那些具有temporary=TRUE
且超过时间窗口的文件(以及相应的数据库记录)。在我的例子中,它是15分钟,但你可以设置为粗糙(每小时左右)
希望这有点帮助:)没有一个问号,没有代码示例。。你到底在问什么?当然最好将曲目和元数据都上传到服务器,并存储一个不完整的记录,直到两者都完成为止?还是我没抓住重点?不管怎样,这对StackOverflow来说都不是一个好问题。谢谢,这是一个与我刚才所想的类似的解决方案。然而,我正在考虑进一步抽象数据库,并将任何临时上传信息保存到另一个表中,然后在保存meta后将其移动到tracks表中。这也应该起作用