微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在向用户显示后立即删除动态生成的PDF文件

我正在使用ITextSharp和ASP.NET 1.1动态创建PDF文件.我的流程如下 –

>在服务器上创建文件
>将浏览器重定向到新创建的PDF
文件,以便显示用户

我想要做的是在用户浏览器中显示PDF后立即从服务器中删除PDF. PDF文件很大,因此无法将其保存在内存中,因此需要对服务器进行初始写入.我目前正在使用定期轮询文件然后删除它们的解决方案,但我更喜欢在将文件下载到客户端计算机后立即删除文件解决方案.有没有办法做到这一点?

解决方法

您可以使用自己的HttpHandler自行提供文件,而不是将浏览器重定向到创建的文件.然后,您可以在提供文件后立即删除文件,或者您甚至可以在内存中创建该文件.

将PDF文件直接写入客户端:

public class MyHandler : IHttpHandler {
    public void ProcessRequest(System.Web.HttpContext context) {
        context.Response.ContentType = "application/pdf";
        // ...
        PdfWriter.getInstance(document,context.Response.OutputStream);
        // ...

或读取已生成文件’filename’,提供文件,删除它:

context.Response.Buffer = false;
context.Response.BufferOutput = false;
context.Response.ContentType = "application/pdf";

Stream outstream = context.Response.OutputStream;
FileStream instream = 
    new FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.Read);

byte[] buffer = new byte[BUFFER_SIZE];
int len;
while ((len = instream.Read(buffer,BUFFER_SIZE)) > 0) {
    outstream.Write(buffer,len);
}
outstream.Flush();
instream.Close();

// served the file -> Now delete it 
File.Delete(filename);

我没试过这段代码.这就是我认为它会起作用的方式……

原文地址:https://www.jb51.cc/csharp/98610.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐