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 要求が、ロックされたセッション ファイルによってブロックされないようにするために必要です。session.forget(response)Ajax リクエストによって呼び出されるコントローラー アクションでは、アクションがロックしたり、セッションに書き込みを行ったりしないように追加する必要もあります。

于 2012-06-14T14:09:33.257 に答える