2016-04-28 24 views
0

セッションを使用しているASP.NETアプリケーションから、角度のないMVCアプリケーションに移行しています。BlueImp jQuery FileUploadを使用してアップロードしたファイルに、どのようにしてアクセスできますか?

既存のシナリオは次のとおりです。 ユーザーはXMLファイルをサーバーにアップロードし、XMLに対して検証ルーチンを実行します。警告が表示された場合は、ユーザーにキャンセルまたは続行を求めるダイアログを表示します。ユーザーが続行することを選択した場合、サーバー上でXMLファイルをSessionから取り出して処理を続行します。

私たちの新しいアプリケーションでは、セッションにアクセスすることはできません。これを処理するさまざまな方法があります。

BlueImp jqueryファイルアップロードウィジェット(再アップロードのためのユーザーの操作なし)を使用してファイルを再アップロードする方法があるのだろうかと思います。

私の実装は、石に設定されますが、ここで私は、現時点で働いているものですされていません。

私は2つの異なるWEBAPI方法を持っている - 第一は、最初のアップロードです。 2番目は「続行する、私は警告を承認する」ステップです。

私はjquery fileuploadで利用可能なさまざまなコールバックを使用して遊んできました。送信コールバックで最初の送信を行い、サーバーレスポンスを受信して​​からユーザーにダイアログを提供するまでブロックし、ユーザーが続行をクリックするとファイルアップロードウィジェットのURLを変更し、もう一度sendを呼び出します。

思考?

追加する編集: 私は、チャンクファイルの機能を活用しようとしている - 私は0にアップロードされたバイトを設定した場合、それが再び全体を送るだろうと思いました。 、サーバー上で

MemoryCacheでアップロードされたファイルを保存し、GUIDを割り当て、クライアントにGUIDを返す:

答えて

0

あなたのセッションのための単純な置き換えとしてMemoryCacheを使用することができます。クライアントが警告を承認すると、単にGUIDのみで別の要求を送信し、ファイルの処理を続行します。

二度目は、少なくとも2つの理由のために良いアイデアではありませんファイルをアップロードする:ファイルが変更された場合は、再度、全体のことをチェックしなければならないので、

  1. あなたは、知りません。
  2. 帯域幅を節約することができます(モバイルアプリケーションにとって特に重要です)。
+0

ご意見ありがとうございます。私はGUIDを返すというアイデアが気に入っています。このアプローチで唯一の問題は、いつ期限切れになるかわからないことです。 私が以下で共有する解決策を思いつきました。あなたが提起した#1の懸念事項は私の問題ではありません。ファイルにはユーザーの操作が含まれていないため、ファイルは変更されていないと確信しています。 – MsGirlPerl

0

おそらく最も洗練された解決策ではないかもしれませんが、これは私が思いついたものです。これはangularJS命令です。ここで(簡略)リンク機能は次のとおりです。

リンク:機能(スコープ、iElement、iAttr) {

   var continueUpload = function() 
       { 
        iElement.fileupload({ 
            url: 'myUrl_continue', 
            dataType: 'json' 
           }); 

           var filesList = iElement[0].files; 

           iElement.fileupload('send', { files: filesList }); 
       }; 

       iElement.fileupload({ 
        url: 'myUrl', 
        dataType: 'json', 
        add: function (e, data) 
        {       
         var jqXHR = data.submit() 
         .success(function (result, textStatus, jqXHR) 
         { 
          if ((result == 1) || (result == 2)) 
          { 
           Confirm(msg, scope, function() { continueUpload(); }, function() { doNothingRightNow(); });         
          } 
         }) 
        } 
       }); 
      } 

が、これは誰かに役立ちます願っています。

関連する問題