質問

自分のサイトに GEDCOM エクスポートを実装する必要があります。

gedcom へのエクスポートをクリックすると、私の .net コードはサーバーに 1 つのファイルを作成しました。

次に、それをサーバーからクライアントにダウンロードする必要があり、またユーザーはそのファイルを保存する場所を尋ねられる必要があります。つまり、saveddialog が必要です。

ダウンロード後、そのファイルをサーバーから削除したいと考えています。

サーバーからクライアントにファイルを送信するコードが 1 つあります。

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

これから リンク

しかし、このコードの後のファイルを削除することはできません Response.End 応答を終了するため、その行の後に書かれたコードは実行されません。

前にファイルを削除するコードを実行した場合 Response.End();, 、その後、ファイルは送信されず、エラーが発生します。

役に立ちましたか?

解決

Response.End の後に配置したものは、その時点で ThreadAbortException をスローしてページの実行を停止するため、実行されません。

代わりにこれを試してください:

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

他のヒント

ファイルがかなり小さい場合は、ファイルをバイト配列にロードして、データを送信しながらファイルを削除できます。

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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top