2016-10-06 3 views
0

Ich arbeite in einer Funktion zum Download von PDFs von DropBox, ich benutze ASP.net Core, alles funktioniert gut. Die einzige Sache ist, dass, wenn Sie auf den Downloadlink klicken, es keine Nachricht anzeigt und die Datei herunterlädt. Ich möchte den Download-Fortschritt zeigen, wie es normalerweise passiert, wenn wir etwas aus dem Internet herunterladen, ich möchte keinen Dialog erscheinen, nur um zu zeigen, dass die Datei heruntergeladen wurde, wie es normalerweise in jedem Browser wie Chrome oder IE geschieht Auswahl 'Show in Folder' und solche Dinge, was müsste ich hinzufügen?Zeige Download-Fortschritt im Browser

public async Task DownloadPdf() 
      { 
       DropboxClient client2 = new DropboxClient("cU5M-a4exaAAAAAAAAABDVZsKdpPteNmwHslOeFEo-HByuOr4v4ONvXoAMCFyOXH"); 
       string folder = "MyFolder"; 
       string file = "Test PDF.pdf"; 
       using (var response = await client2.Files.DownloadAsync("/" + folder + "/" + file)) 
       { 
        using (var fileStream = System.IO.File.Create(@"C:\Users\User\Downloads\Test.pdf")) 
        { 
         (await response.GetContentAsStreamAsync()).CopyTo(fileStream);      
        } 
       } 
      } 
+1

Siehe hier http:// Stackoverflow.com/q/74019/5311735 (Content-Disposition Header). – Evk

+0

@Evk Die einzige Sache ist, dass ich ASP.net Core benutze und wir können den Namespace System.Wen nicht in Core finden, wie kann ich das in Core tun? – AlexGH

+0

Ich bin nicht vertraut mit asp.net Kern, aber ich denke, es ist nicht schwer zu google darüber, wie Header zu Antwort dort hinzufügen (das ist sehr grundlegende Operation). – Evk

Antwort

1

Ich habe ein asp.net Kernprojekt mit einer API, die eine Datei zurückgibt:

[HttpGet("{id}")] 
public IActionResult Get(int id) { 
    byte[] fileContent = READ_YOUR_FILE(); 
    FileContentResult result = new FileContentResult(fileContent, "application/octet-stream") { 
    FileDownloadName = id.ToString() 
    }; 
    return result; 
} 

Wenn ich in meinem Browser Zugriff auf die URL von diesem API (myapp/api/MyController/id) , dann kann ich das Herunterladen der Datei sehen.