Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ASP.NET Datei-Download - Fragen

Empfohlene Antworten

Veröffentlicht

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?

  • 2 Wochen später...

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ß

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.