Frage

Lassen Sie mich zunächst die Situation beschreiben. Meine Anwendung in C# fordert den PHP -Server nach dem neuesten Update auf. Es verwendet seine URL und eine einfache Post -Attribute wie: 127.0.0.1/update.php?ver=0.2, der Server antwortet mit 404, wenn es keine Version als 0.2 gibt, und mit 200 OK, wenn es eine neuere Version gibt und die Binärdatei sendet im MIME-Typ: Oktettstrom.

Ich habe keine Probleme damit, diese Datei zu erhalten, aber ich habe Probleme mit dem Dateinamen.

Mit diesem Code:

WebClient webClient = new WebClient();
webClient.DownloadFile("http://127.0.0.1/update.php?ver=0.2", filename);

Ich muss meine platzieren Dateiname Aber was ist, wenn ich möchte, dass es denselben Namen wie die Datei auf dem Server hat? Wie kann ich es bekommen, bevor ich es herunterladen?

War es hilfreich?

Lösung

Wenn du benutzt OpenRead() Dann können Sie sehen, ob es einen Wert für einen Wert gibt webClient.ResponseHeaders["content-disposition"] und analysieren Sie den Dateinamen = "Blah.blah" -Teil.

Die überwiegende Mehrheit der Streams im Web enthält jedoch keine Dateiname-Informationen, und wenn sie gesendet werden, möchten Sie jedoch die Dateierweiterung basierend auf dem Inhaltstyp neu schreiben, damit die Dateierweiterung mit der Zuordnung auf dem Computer übereinstimmt, das sie ist retten zu sein.

Andere Tipps

Dies ist nicht direkt möglich, weil WebClient Bietet hochrangige Funktionen, die sich nicht so gut für solche Szenarien eignen.

Es gibt mehrere Ansätze, die Sie verfolgen können, aber alle erfordern Änderungen an der einen oder anderen Art. Hier sind ein Paar:

  1. Sie können die Funktionalität in zwei Teile aufteilen: einen Anruf machen (zB mit DownloadString) Das sagt Ihnen, ob es ein Update gibt und wie es heißt, dann Anruf DownloadFile Um das Update selbst zu erhalten, wissen Sie den Namen.
  2. Geben Sie die Bequemlichkeit von auf DownloadFile und die HTTP -Anfrage auf einer niedrigeren Ebene bearbeiten; Tun Sie dies, damit Sie die HTTP -Antwort -Headers lesen und einen Header hinzufügen können (kann alles sein, können Sie sogar einen wie z. X-Save-Filename:) Das sagt Ihnen, wie der Dateiname aussehen soll.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top