2017-12-30 9 views
2

Ich implementiere die React-Version von FineUploader in meiner App, um Dateien in Azure Blob Storage hochzuladen.Hochladen von Dateiinformationen von FineUploader

Sobald ich sicherstelle, dass Dateien hochgeladen werden, muss ich ihre Informationen in meiner Backend-Datenbank speichern. Ich möchte keine Dateiinformationen in meiner Datenbank registrieren, wenn ich nicht weiß, dass sich die Dateien in meinem Blobspeicher befinden. Hier ist die Info, die ich erfassen müssen:

  • ursprünglichen Dateinamen
  • zugewiesen blobName oder uuid
  • , wenn ich kann, die Dateigröße Info wäre sehr nützlich, auch, aber es ist kein Muss

Wenn Ich lese gerade die Dokumentation richtig, blobProperties scheint der richtige Ort für mich zu sein, um diese Informationen zu bekommen, aber bis jetzt war ich nicht in der Lage, dies zur Arbeit zu bringen.

Innerhalb blobProperties, brauche ich nicht meine Datenbank aufrufen, um einen BlobName zu erhalten. Ein einfacher GUID Wert, den ich zuweisen kann, ist in Ordnung oder einfach erfassen Sie die uuid FineUploader zuweisen. Ich möchte nur die Informationen erfassen, die ich brauche, und sie in meinem Redux Store speichern. Diese

ist, wo ich Hilfe brauchen:

const uploader = new FineUploaderAzure({ 
    options: { 
     blobProperties: function(id) { 

      // How do I get original file name here? 
      // If I can, I'd like to get file size as well. 
      // Once I know file's original name as well as the blobName assigned to it, I'll store them in my Redux store 
     }, 
     cors: { 
      expected: true, 
      sendCredentials: false 
     }, 
     signature: { 
      endpoint: 'http://myapp.com/api/getsas' 
     }, 
     request: { 
      endpoint: 'https://myaccount.blob.core.windows.net/my-container' 
     }, 
     callbacks: { 
      onComplete: function (id, name, responseJSON, xhr) { 

       myFunction(responseJSON); 

      } 
     } 
    } 
}) 

const myFunction = (responseJSON) => { 

    // If upload is successful, I'll get file details from Redux store and call my action creators 
    // to trigger an API call to my backend so that I can register uploaded files in my database. 
} 

ich einige Hinweise zu schätzen wissen würde, wie die Datei Informationen zu erhalten, die ich suche.

+0

Mein Verständnis ist, dass Sie die JSON-Antwort auf dem Server, so etwas wie dieses bauen: return Json (neu {status = "Erfolg", filename = "MeinDateiname"}); - Wie bauen Sie Ihre Antwort JSON? – Sarhang

+0

Ich lade direkt zu Azure Blob Storage hoch, damit ich nicht auf meinen Server klicke, nachdem die Datei bereits hochgeladen wurde. Die Idee ist, meine Server-Anfrage vorzubereiten, sobald ich 'onComplete' drücke, aber vielleicht folge ich nicht dem vorgeschriebenen Weg. – Sam

+0

Um dies weiter zu verdeutlichen, möchte ich hochgeladene Dateiinformationen erfassen, sobald der Upload abgeschlossen ist, und dann einen API-Aufruf an meinen Server senden, um hochgeladene Dateiinformationen in meiner Backend-Datenbank zu speichern. Ist das nicht der richtige Workflow? – Sam

Antwort

1

Mit dem onComplete Funktionsargument id Sie alles, was mit den Methoden ausgesetzt durch fineUploader wie

Sie können sie wie dies in Ihrer Funktion aufrufen

onComplete: function (id, name, responseJSON, xhr) { 
       uploader.methods.getName(id); 
       uploader.methods.getSize(id); 
       uploader.methods.getBlobName(id); 
       myFunction(responseJSON); 
      } 
+1

Vielen Dank für Ihre Hilfe! Bonuspunkte gut verdient! Schätze es wirklich! – Sam

Verwandte Themen