1

モバイル デバイスから画像をアップロードするために使用される通常の JSP/サーブレット/Java Web アプリケーションがあります。アップロードには Apache Commons ライブラリを使用しています。アプリケーションは、WebSphere Application Server 7.0 でホストされています。

すべてが正常に機能しており、信号/接続が非常に良好な場合、または Wi-Fi が良好な場合、ユーザーは合計 8MB 以上の複数の画像をアップロードできます。

この問題は、ユーザーが 3G/4G 信号/接続の悪い場所にいる場合に発生します。彼は「不正な状態の例外」やタイムアウト エラーなどのエラーを受け取り、場合によっては、モバイル ブラウザーが送信ページにとどまり、進行状況バーが動かなくなることがあります。

これを「優雅に」処理する方法について何か提案はありますか? 一定時間後に介入し、ファイルを添付せずにフォームを送信するオプションをユーザーに与える方法はありますか (つまり、フォームのテキスト フィールドを送信するだけです)。他の提案も大歓迎です。

更新:以下の setTimeout ソリューションは私にとってはうまくいきました。もう 1 つの欠けている部分は、再送信を発行する前に、進行中の元の送信を停止するために「ブラウザ停止」コマンドを発行する必要があることです。そうしないと、再送信コマンドがブラウザによって無視されます。

4

2 に答える 2

2

ここでの使用例は単純です。アップロードが N 分以内に終了しなかった場合は、javascript を使用してフィールドを削除/クリアし、フォームを再送信します。

基本的な実装でアップロードを制御する必要はありません。再送信のタイムアウトを設定した場合、最初の試行が成功してページがリロードされた場合は発生しないと想定してください。

jQuery 疑似コード:

setTimeout(function(){
  $imageFieldNode.remove();
  $form.trigger('submit');
},30000);//after 30 seconds

より高度な方法は、制御されたアップロードに対応したソリューションを使用することです。それらは次のように機能します。

  1. アップロード開始
  2. js は、GET クエリを使用して間隔を置いてサーバーにプロンプ​​トを出し、既に受信したコンテンツのサイズを取得します。
  3. 情報を取得するたびに、進行状況を報告します。

これらのライブラリで多くのことができます。

于 2012-12-03T18:16:00.007 に答える
0

一般的な Web メール クライアントで使用されているアプローチについて考えることができます (メッセージにファイルを添付する場合)。

ファイルは、javascript を使用して、フォームの送信とは別に (つまり、前に) アップロードされます。各ファイルは一時ディレクトリに保存され、アップロードが成功した後、ユーザーはアクションを続行できます。アップロードのステータスがユーザーに表示され、失敗してもメイン アクション (フォームの入力/送信) は中断されません。

于 2012-12-03T18:15:45.193 に答える