Domanda

Devo implementare GEDCOM esportazione nel mio sito.

Il mio codice .NET creato un file sul server quando l'esportazione in gedcom fatto clic.

Poi ho bisogno di scaricarlo sul client dal server così come utente dovrebbe essere chiesto dove salvare il file, il che significa è necessario SaveDialog.

Dopo averlo scaricato, voglio cancellare tale file dal server.

Ho un codice in un file di trasmissione dal server al client:

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

LINK

, ma io non sono in grado di eliminare il file dopo questo codice come finisce Response.End risposta, in modo qualunque sia il codice scritto dopo che la linea non viene eseguito.

Se faccio il codice in un file di eliminazione prima di Response.End();, quindi file non trasmesso e ottengo un errore.

È stato utile?

Soluzione

Tutto ciò che si mette dopo Response.End non sarà possibile ottenere eseguito perché getta una ThreadAbortException all'esecuzione fermata della pagina in quel punto.

Prova questo, invece:

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);
}

Altri suggerimenti

Se il file è ragionevolmente piccolo, è possibile caricare in un array di byte in modo da poter eliminare il file pur essendo in grado di inviare i dati:

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top