Net.Webclient Download Datei von URL Dateiname

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von D@niel.

    Net.Webclient Download Datei von URL Dateiname

    Hallo zusammen,

    ich versuche mittels Webclient von einer URL eine Datei herunterzuladen und zu speichern.
    Dies funktioniert grundsätzlich auch allerdings nur wenn ich einen Pfad + Dateinamen vorgebe.

    VB.NET-Quellcode

    1. Dim client As New Net.WebClient
    2. Dim fileName as String
    3. client.DownloadFile(Url, fileName)


    Ich würde nun allerdings gerne den Default Dateinamen verwenden der mir angezeigt wird wenn ich den Link manuell aufrufe.
    Es handelt sich um eine zu speichernde Exceldatei.
    solarweb.com/Report/DownloadAu…ab-4de8-be3d-973aab4a66ee

    Meine Frage daher gibt es eine Möglichkeit diesen Dateinamen zu ermitteln?

    Vielen Dank für eure Unterstützung.

    Daniel
    Hi,
    die WebClient-Klasse soll nicht mehr verwendet werden. Stattdessen soll man den HttpClient verwenden. Dein Dateiname steht im ContentDisposition-Header. Hier mal ein Beispiel

    C#-Quellcode

    1. ​using System;
    2. using System.Net.Http;
    3. using var client = new HttpClient();
    4. var response = await client.GetAsync("https://www.solarweb.com/Report/DownloadAuto?reportId=00ef0b7b-e7ab-4de8-be3d-973aab4a66ee");
    5. if (response.IsSuccessStatusCode)
    6. {
    7. using var fileStream = System.IO.File.Create($"C:\\Temp\\{response.Content.Headers.ContentDisposition.FileNameStar}");
    8. using var contentStream = await response.Content.ReadAsStreamAsync();
    9. await contentStream.CopyToAsync(fileStream);
    10. contentStream.Close();
    11. fileStream.Close();
    12. }
    Hey

    vielen Dank für den Hinweis. Hatte ich in Docs tatsächlich überlesen, dass WebClient veraltet ist.

    Falls jemand vor einem ähnlichen Problem steht nachfolgend das ganze in VB.net

    VB.NET-Quellcode

    1. Async Sub SolarWebDownload(URL As String)
    2. Using client As HttpClient = New HttpClient()
    3. Using response As HttpResponseMessage = Await client.GetAsync(URL)
    4. If response.IsSuccessStatusCode Then
    5. Using fileStream = System.IO.File.Create($"C:\\Temp\\{response.Content.Headers.ContentDisposition.FileNameStar}")
    6. Using contentStream = Await response.Content.ReadAsStreamAsync
    7. Await contentStream.CopyToAsync(fileStream)
    8. contentStream.Close()
    9. fileStream.Close()
    10. End Using
    11. End Using
    12. End If
    13. End Using
    14. End Using
    15. End Sub