1

我创建了一个 pdf 文档

        var document = new Document();
        string path = Server.MapPath("AttachementToMail");
        PdfWriter.GetInstance(document, new FileStream(path + 
                  "/"+DateTime.Now.ToShortDateString()+".pdf", FileMode.Create));

现在我想下载这个文件

 Response.ContentType = "Application/pdf";
 Response.AppendHeader("Content-Disposition", "attachment; filename="+   
                                DateTime.Now.ToShortDateString() + ".pdf" + "");
 Response.TransmitFile(path);
 Response.End();

但它给了我错误 访问路径'〜\ AttachementToMail'被拒绝。

存在 IIS_IUSRS 的读/写访问权限

4

1 回答 1

2

您提供的写入路径是虚拟路径。TransmitFile需要一个绝对路径。

您的代码应如下所示:

var document = new Document();
string path = Server.MapPath("AttachementToMail");
var fileName =  DateTime.Now.ToString("yyyyMMdd")+".pdf";
var fullPath = path + "\\" + fileName;

//Write it to disk
PdfWriter.GetInstance(document, new FileStream(fullPath, FileMode.Create));

//Send it to output
Response.ContentType = "Application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename="+ fileName );

Response.TransmitFile(fullPath);
Response.Flush();
Response.End();

DateTime.Now表示当前时间。使用它作为文件名时要小心。使用ToShortDateString有点冒险,因为某些文化/采用这种格式。无论服务器文化如何,使用ToString都将允许您修复文件名格式。

于 2012-09-21T09:26:35.370 回答