加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:28:33 所属栏目:百科 来源:网络整理
导读:我正在使用ITextSharp和ASP.NET 1.1动态创建PDF文件.我的流程如下 – 在服务器上创建文件 将浏览器重定向到新创建的PDF 文件,以便显示给用户 我想要做的是在用户浏览器中显示PDF后立即从服务器中删除PDF. 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);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读