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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/csharp/98610.html

猜你在找的C#相关文章