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

时间:2012-06-14 10:45:47

标签: javascript jquery python forms web2py

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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),以便操作不会锁定或写入会话。