Frage

Ich habe GEDCOM Export in meiner Website zu implementieren.

Mein .net Code erstellt eine Datei auf dem Server, wenn die Ausfuhr in gedcom geklickt hat.

Dann muß ich es Client vom Server herunterzuladen, sowie Benutzer gefragt werden sollen, wenn die Datei zu speichern, was bedeutet, Savedialog erforderlich ist.

Nachdem es heruntergeladen ist, möchte ich, dass die Datei vom Server löschen.

Ich habe einen Code zu übertragen Datei vom Server zum Client:

Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.TransmitFile(Server.MapPath("~/" + FileName));
Response.End();

von diesem LINK

, aber ich bin nicht in der Lage, die Datei nach diesem Code löschen als Response.End Enden response so was Code geschrieben, nachdem diese Zeile ausführt nicht.

Wenn ich Code tun, um Datei löschen, bevor Response.End();, dann wird Datei nicht übertragen, und ich erhalte eine Fehlermeldung.

War es hilfreich?

Lösung

Alles, was Sie nach Response.End setzen wird nicht ausgeführt werden soll, weil sie eine Threadabort zu stoppen Ausführung der Seite an diesem Punkt wirft.

Versuchen Sie diese statt:

string responseFile = Server.MapPath("~/" + FileName);

try{
    Response.ContentType = "text/xml";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
    Response.TransmitFile(responseFile);
    Response.Flush();
}
finally {
    File.Delete(responseFile);
}

Andere Tipps

Wenn die Datei relativ klein ist, können Sie es in einen Byte-Array geladen werden können, so dass Sie die Datei löschen können, während noch in der Lage sein, die Daten zu senden:

Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
string path = Server.MapPath("~/" + FileName);
byte[] data = File.ReadAllBytes(path);
File.Delete(path);
Response.BinaryWrite(data);
Response.End();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top