Wie lade ich eine Datei herunter, ohne den Typ oder Dateinamen zu kennen?

DerHelm

Ich habe einen Download-Link wie diesen:

https://someURL.com/PiPki.aspx?ident=594907&jezik=de

Das Download-Ergebnis kann eine Datei mit einem beliebigen Dateityp sein. Zum Beispiel Picture.jpgoder something.pdf. Wie ist es möglich, die hinter diesem Link stehende Datei mit ihrem ursprünglichen Namen und ihrer ursprünglichen Erweiterung herunterzuladen?

Paul Kertscher

Über HTTP besteht nicht nur die Möglichkeit, Nutzdaten zu übertragen, sondern es gibt auch einen Header, mit dem Sie Metadaten übertragen können. Auf der Empfängerseite können Sie diese Daten verwenden, z. B. um den Namen zu bestimmen, unter dem die Datei gespeichert werden soll.

Um den Dateityp zu bestimmen, muss die HTTP-Antwort den richtigen Content-TypeHeader haben (siehe hier ). Wenn es sich bei der übertragenen Datei um eine PDF-Datei handelt, enthält die HTTP-Antwort das Header-Feld

Content-Type: application/pdf

Darüber hinaus besteht die Möglichkeit, einen Dateinamen im Content-DispositionHeader zu übergeben (siehe hier ), wenn die Disposition auf gesetzt ist attachment(dh eine herunterladbare Datei anstelle von Inline-Inhalten).

Content-Disposition: attachment; filename="something.pdf"

Wenn es ein bekannten ist Content-Type, aber kein Dateiname, würde Ihre Option sein , ein Standard - Dateinamen zu verwenden und die Erweiterung Anpassung der Content-Typezum Beispiel download.pdf. Wenn das Content-Typefehlt oder generisch ist, haben Sie Pech. Sie könnten versuchen, den Inhalt der Datei abzurufen, dies kann jedoch erfolgreich sein oder auch nicht und für bestimmte Dateitypen unzuverlässig sein.

Da dies eine C # -Frage ist

var client = new HttpClient();

using (var response = await client.GetAsync("https://someURL.com/PiPki.aspx?ident=594907&jezik=de"))
{
    string fileName = null;

    if (response.Headers.Contains("Content-Disposition"))
    {
        fileName = GetFileNameFromContentDisposition(response.Headers);
    }

    if (fileName == null && response.Headers.Contains("Content-Type"))
    {
        var extension = GetExtensionFromContentType(response.Headers);
        fileName = $"download.{extension}";
    }

    using (var fileStream = File.OpenWrite(fileName))
    {
        await response.Content.CopyToAsync(fileStream);
    }
}

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie lade ich eine neue Version der Datei herunter, ohne den Client-Cache zu verwenden?

Wie lade ich eine Datei herunter, ohne das <a> -Element mit Download-Attribut oder einen Server zu verwenden?

Wie lade ich eine Datei ohne das Dialogfeld "Seite verlassen" oder eine andere Eingabeaufforderung herunter?

Wie lade ich eine Datei mit Node.js herunter (ohne Bibliotheken von Drittanbietern zu verwenden)?

Wie lade ich eine Matrix aus einer Datei, ohne ihre Größe zu kennen und ohne mehrfaches Lesen?

Wie rufe ich eine Funktion von einer generischen Funktion auf, ohne den Typ zu kennen?

Wie öffne ich eine Datei, ohne ihre Erweiterung zu kennen, aber den vollständigen Namen zu kennen?

Wie tagge ich eine einzelne Datei? oder Wie lade ich eine bestimmte Datei herunter? - GIT

Wie kann ich auf eine Datei zugreifen, ohne den vollständigen Dateipfad zu kennen?

Wie lade ich eine Datei in Java herunter?

Wie lade ich ein img attr "src" nach einem Ajax-Aufruf neu, ohne den Dateinamen aus dem Image-Tag zu kennen?

Wie lade ich ein Bild oder eine Bitmap von einem API-Endpunkt herunter, ohne ImageView zu verwenden?

Wie lade ich eine Datei über die Windows-Befehlszeile herunter, ohne ein Proxy-Passwort eingeben zu müssen?

Wie lade ich eine Docx-Datei oder eine msWord-Datei mit Reactjs herunter?

Wie lade ich eine große Sammlung in Firestore mit Python herunter, ohne den Fehler 503 zu erhalten?

Wie erstelle ich eine Methode zum Füllen einer Matrix, ohne den Typ der Eingabe zu kennen?

Wie schreibe ich einen "isX" -Typschutz für eine generische Typliste <T>, ohne den Typ von T zu kennen?

Wie gebe ich einen Download-Ordner an, ohne den Dateinamen zu kennen?

Wie kann ich eine JSON-Datei analysieren, ohne den Namen des Objekts zu kennen, nach dem ich in Python suche?

Wie lade ich eine Datei über das Terminal herunter, wenn ich den expliziten Link nicht kenne?

Aus einer Datei lesen, ohne den Typ zu kennen

Wie lade ich eine Datei oder InpuStream im Portlet mit Liferay herunter?

Wie lade ich eine Datei mit curl oder wget in ein Verzeichnis herunter?

Wie lade ich eine Datei mit Angular2 oder höher herunter?

Wie lade ich eine Datei oder ein Foto herunter, die an meinen Telegramm-Bot gesendet wurden?

Wie lade ich eine Xcode DMG- oder XIP-Datei herunter?

Wie lade ich einen einzelnen Ordner ODER eine Datei in das Gitlab-Repository herunter?

Wie lade ich die Cloud Firestore-Datenbanksammlung in eine JSON- oder CSV-Datei herunter?

Wie lade ich Listendaten von SharePoint Online in eine CSV- (vorzugsweise) oder JSON-Datei herunter?

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv