Question

Je dois mettre en œuvre l'exportation GEDCOM dans mon site.

Mon code .net créé un fichier au serveur lors de l'exportation vers GEDCOM cliquée.

Alors je dois le télécharger au client à partir du serveur, ainsi que l'utilisateur doit demander où enregistrer ce fichier, ce qui signifie SaveDialog est nécessaire.

Après qu'il est téléchargé, je veux supprimer ce fichier du serveur.

Je suis un code à fichier de transmission du serveur au client:

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

de cette LINK

mais je ne suis pas en mesure de supprimer le fichier après ce code comme se termine Response.End de réponse de façon quel que soit le code écrit après cette ligne est exécute pas.

Si je fais le code avant de supprimer un fichier Response.End();, puis fichier ne se transmet pas et je reçois une erreur.

Était-ce utile?

La solution

Tout ce que vous mettez après Response.End ne sera pas exécuté parce qu'il jette un ThreadAbortException à l'exécution d'arrêt de la page à ce moment-là.

Essayez ceci:

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

Autres conseils

Si le fichier est assez petit, vous pouvez le charger dans un tableau d'octets de sorte que vous pouvez supprimer le fichier tout en étant capable d'envoyer les données:

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top