2017-08-17 5 views
0

MVCとWeb APIを使用したファイルアップロードのためにjQueryファイルアップロードを使用しています。デフォルト動作の使用singleFileUploads = true(デフォルトでは、選択の各ファイルは個別の /XHRタイプのアップロードの要求を使用してアップロードされます)。Jqueryファイルアップロード:画像アップロードが成功した後のデータベース呼び出し

サーバーにアップロードされたすべてのイメージが完成したら、最終的なデータベース挿入コールで画像の総数とその他のデータを保存しようとしています。 もう1つの問題は、Webサーバーがファイルサーバーにアクセスできないため、アプリケーションサーバーのみがファイルサーバーから画像を保存して読み取ることができることです。

私はすでにそこに似た質問をしていますが、どちらも環境と問題が異なります。ここで running SQL after successful upload with jQuery-File-Upload

コードです:私は、すべてのコールバック関数は、行わ完了し が終わっ使用してみましたが、すべての機能は、各ファイルのアップロード後にコールを取得します。私はすべてのファイルのアップロードが完了したときにSaveDataDB()を一度だけ呼び出そうとしています。

$(function() { 

    $form = $('#fileupload').fileupload({ 
     dataType: 'json', 
     singleFileUploads: true, 
     sequentialUploads:false, 
     url: "/FileUpload/Upload", 
     add: function (e, data) { 
      $("#btnStart").on("click", function() { 
       data.submit(); 
      }) 
     }, 
     completed: function (e, data) { 
      $.ajax({ 
       url: "/FileUpload/SaveDataDB", 
       type: "POST", 
       dataType: "json" 
      }); 
     }, 
    }).bind('fileuploadcompleted', function (e, data) { alert("Message", "Title"); }) 
     .bind('fileuploadfinished', function (e, data) { alert("fileuploadfinished", "Title") }) 
     **.bind('fileuploadstop', function (e, data) { 
      $.ajax({ 
       url: "/FileUpload/SaveDataDB", 
       type: "POST", 
       dataType: "json", 
       data: TotalFiles, 
       success: function (data) { 
       };** 

}); 

MVCコントローラ

[HttpPost] 
    public JsonResult Upload() 
    { 
     var resultList = new List<ViewDataUploadFilesResult>(); 

     var CurrentContext = HttpContext; 

     filesHelper.UploadAndShowResults(CurrentContext, resultList); 
     JsonFiles files = new JsonFiles(resultList); 
     bool isEmpty = !resultList.Any(); 
     if (isEmpty) 
     { 
      return Json("Error "); 
     } 
     else 
     { 
      return Json(files); 
     } 
    } 

    [HttpPost] 
    public JsonResult SaveDataDB() 
    { 
     return Json(new { status = "Success", message = "Success" }); 
    } 
+0

でそれらをマージしてみてくださいので、内部 'アップロード( ) '関数を呼び出して、save save()を呼び出すと' SaveDataDB() 'が呼び出されます。 – Munzer

+0

成功関数は、完了したのと同じファイルアップロード要求ごとに複数回呼び出されます。 – Sidh

+0

各フォーム提出は、1つのファイルアップロードのみを引き起こします。 –

答えて

0

ハイテク代わりに二つの異なるアクションを作るのは、あなたが成功のアップロード時に、それを呼び出すことはありません、なぜ1

[HttpPost] 
    public JsonResult Upload() 
    { 
     var resultList = new List<ViewDataUploadFilesResult>(); 

    var CurrentContext = HttpContext; 

    filesHelper.UploadAndShowResults(CurrentContext, resultList); 
    JsonFiles files = new JsonFiles(resultList); 
    bool isEmpty = !resultList.Any(); 
    if (isEmpty) 
    { 
     return Json("Error "); 
    } 
    else 
    { 
     //Put the SaveToDb Code here 
     return Json(new{files=files,success="success",message ="success"); 
    } 
} 
+0

を再度アップロードして同じ問題をアップロードし、各ファイルのアップロードを呼び出します。 – Sidh

+0

解決策を得て、イベントfileuploadstopをバインドします。このイベントはファイルのアップロードが完了した後に呼び出されます。このコードを追加する質問を編集しました。 – Sidh

関連する問題