2017-08-17 3 views
0

Ich verwende den jQuery-Dateiupload für Dateiuploads mit MVC und Web-API. Verwenden des Standardverhaltens singleFileUploads = true (Standardmäßig wird jede Datei einer Auswahl mit einer individuellen /Anfrage für XHR-Uploads hochgeladen.)Jquery File Upload: Datenbankaufruf nach erfolgreichem Upload von Bildern

Ich versuche, die Gesamtzahl der Bilder und einige andere Daten in der endgültigen Datenbank einzufügen, sobald alle auf den Server hochgeladenen Bilder abgeschlossen sind. Das andere Problem ist Web-Server hat keinen Zugriff auf Dateiserver, nur App-Server kann Bilder von Dateiserver speichern und lesen.

Ich kenne ähnliche Frage bereits dort, aber beide haben unterschiedliche Umgebungen und Probleme. running SQL after successful upload with jQuery-File-Upload

Hier Code: Ich habe versucht, alle Callback-Funktionen getan, abgeschlossen und fertig, aber jede Funktion bekommt Anruf nach jeder Datei-Upload. Ich versuche, SaveDataDB() nur einmal aufzurufen, wenn alle Dateiuploads abgeschlossen sind.

$(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-Controller

[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

, warum Sie es nicht auf Erfolg Upload rufen, so innen 'Upload () 'Funktion in Ihrem mvc, rufen Sie' SaveDataDB() 'bei erfolgreicher Speicherung auf. – Munzer

+0

Erfolgsfunktion wird für jede Datei Upload-Anforderung mehrmals aufgerufen als getan. – Sidh

+0

Jede Formularübergabe verursacht nur einen Datei-Upload, stimmt das? –

Antwort

0

hallo, anstatt, zwei verschiedene Aktionen verschmelzen versuchen, sie in einem

[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

wieder das gleiche Problem, ruft für jede Datei hochladen. – Sidh

+0

habe die Lösung, bind event fileuploadstop. Dieses Ereignis wird aufgerufen, nachdem Dateiuploads abgeschlossen wurden. Ich habe die Frage bearbeiten müssen, um diesen Code hinzuzufügen. – Sidh