- GET (Download von Dateien)
- POST (Upload von Dateien)
- PUT (Upload von Dateien)
- DELETE (Löschen von Dateien)
Im folgenden Beispiel zeige ich, wie man einen einfachen Datei-Download anhand eines REST-Webservices (per GET) erstellen kann.
Bei "context" handelt es sich um den aktuellen HttpContext.
// Prüfen der Http-Übertragungsmethode
if(context.Request.HttpMethod = "GET")
{
// FileInfo-Objekt für die Datei erstellen, die heruntergeladen werden soll
FileInfo requestFile = new FileInfo("C:\\Testdatei.txt");
// Anhand der gerade ermittelten Datei ein ByteArray für eine Datenübertragung erstellen
byte[] fileBytes = File.ReadAllBytes(requestFile.FullName);
// Aktuellen Inhalt des HttpContextes leeren
context.Response.Clear();
// Aktuelle Headerinformationen des HttpContextes leeren
context.Response.ClearHeaders();
// Angabe des Types der zu übertragenden Datei
context.Response.ContentType = "text/plain";
// Neue Headerinformationen zum HttpContext hinzufügen
context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + requestFile.Name + "\"");
context.Response.AddHeader("Content-Length", requestFile.Length.ToString());
// MD5-Hash für aktuelle Datei erstellen um nach dem Download die Vollständigkeit zu prüfen
// Info: FileHelper ist eine eigene Hilfs-Klasse zum erstellen des MD5-Hash (siehe ältere Blogposts)
context.Response.AddHeader("Content-MD5", StringHelper.Base64Encode(FileHelper.GetMD5Hash(requestFile.FullName)));
// Die Datei/ByteArray ausgeben bzw. zum Download anbieten
context.Response.OutputStream.Write(fileBytes, 0, fileBytes.Length);
// HttpResponse wieder freigeben
context.Response.Flush();
// HttpResponse beenden
context.Response.End();
}
Keine Kommentare:
Kommentar veröffentlichen