1

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 に答える