daTom Geschrieben 8. Oktober 2008 Geschrieben 8. Oktober 2008 Hallo, ich habe hier eine ASP.NET (3.5) Seite, auf der ein Grid angezeigt wird. Ich habe nun die Anforderung, dass aus dem Inhalt des Grids eine Batch Datei generiert werden soll, die der User dann herunterladen kann. Das Erstellen der Datei und funktioniert wunderbar. Der Download klappt auch soweit, allerdings stosse ich hier auf eine kleine Schwierigkeit, bei der ich gerade nicht weiter weiß. Hier erstmal der Code string fileName = Server.MapPath("Stapel.bat"); System.IO.FileInfo fInfo = new System.IO.FileInfo(fileName); fInfo.Delete(); object oDS = this.Session["data"]; DataSet ds; if (oDS != null && oDS is DataSet) { ds = (DataSet)oDS; StreamWriter sWriter = new FileInfo(Server.MapPath("Stapel.bat")).CreateText(); foreach (DataRow o in ds.Tables[0].Rows) { sWriter.WriteLine("call clb " + o[0].ToString()); } } Response.AddHeader("Content-Disposition", "attachment; filename=" + fInfo.Name); Response.AddHeader("Content-Length", fInfo.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.WriteFile(fInfo.FullName); Response.End(); Mir ist aufgefallen, dass StreamWriter sWriter = new FileInfo(Server.MapPath("Stapel.bat")).CreateText(); die Datei in mein Projektverzeichnis ablegt. Ich weiß nicht wie der Pfad auf dem Server aussehen würde, allerdings liegt hier gerade mein Problem. Dadurch, dass die Datei dort in dem Pfad gespeichert wird, kann es passieren, dass 2 Benutzer gleichzeitig auf den Pfad zugreifen wollen. Das ist natürlich alles andere als schön, allerdings fällt mir im Moment keine gescheite Lösung für das Problem ein. Ich hatte schon überlegt einen Ordner (Zufallszahl) anzulegen, allerdings ist dann das Löschen der Datei beim Beenden der Sitzung etwas schwieriger. Dafür gibt es doch bestimmt eine elegantere Lösung?! Hat jemand von euch vielleicht nen Tip für mich? Zitieren
daTom Geschrieben 19. Oktober 2008 Autor Geschrieben 19. Oktober 2008 Ok, ich habe eine Lösung gefunden. Ich habe eine Global.asax Datei erstellt. In der Methode Session_Start lege ich nun den Ordner mit der ID an und speicher mir den absoluten Pfad in einer Session Variable. Analog dazu hol ich mir in der Session_End Methode den Pfad aus der Session Variable heraus und lösche das Verzeichnis mit der absoluten Pfadangabe. Server.MapPath kann man leider nicht in der Session_End Methode verwenden, deswegen muss ich den Schritt mit der absoluten Pfadangabe machen. Gruß Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.