0

可以上传表单提交等待文件处理完成吗?

我正在使用 web2py 及其 sqlform 上传视频,同时将视频转换为 flv 。使用此代码的两个进度条显示上传和编码的进度(http://www.web2pyslices.com/slice /show/1337/upload-progress-in-web2py)。一旦检测到视频上传,编码就会在后端开始。编码和转换都完成后,用户可以播放转换后的视频。

问题是上传完成但编码未完成时接受的表单。我尝试了 event.preventDefault() 但进度条不显示。上传完成时似乎无法停止默认提交。如何防止提交并等待转换过程完成然后提交?谢谢!

4

1 回答 1

1

您可以在不进行数据库插入的情况下验证表单(请参阅此处)。然后验证后,运行一个循环不断检查编码是否完成,编码完成后进行数据库插入和返回。

def video_upload():
    upload_form = SQLFORM(db.encodeupload)
    if upload_form.validate():
        session._unlock(response)
        [while loop checking to see if file encoding is complete]
        db.encodeupload.insert(**db.encodeupload._filter_fields(form.vars))
    [rest of code]

在 while 循环中,您还可以检查编码过程中的错误并在这种情况下中止插入(并返回错误消息)。

请注意,session._unlock(response)在进入循环之前解锁会话文件——这是必要的,因此锁定的会话文件不会阻止页面为更新编码进度条而发出的 Ajax 请求。在 Ajax 请求调用的控制器操作中,您还应该添加session.forget(response)该操作不会锁定或写入会话。

于 2012-06-14T14:09:33.257 回答