Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net中指定动态PDF的文件名_C#_Asp.net_Response - Fatal编程技术网

C# 在asp.net中指定动态PDF的文件名

C# 在asp.net中指定动态PDF的文件名,c#,asp.net,response,C#,Asp.net,Response,将数据转储到响应流时,如何指定文件名 现在我正在做以下工作: byte[] data= GetFoo(); Response.Clear(); Response.Buffer = true; Response.ContentType = "application/pdf"; Response.BinaryWrite(data); Response.End(); 通过上面的代码,我得到了“foo.aspx.pdf”作为要保存的文件名。我似乎记得能够向响应添加标题以指定要保

将数据转储到响应流时,如何指定文件名

现在我正在做以下工作:

byte[] data= GetFoo();
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";            
Response.BinaryWrite(data);
Response.End();

通过上面的代码,我得到了“foo.aspx.pdf”作为要保存的文件名。我似乎记得能够向响应添加标题以指定要保存的文件名。

向标题添加内容配置:

Response.AppendHeader("Content-Disposition", "attachment; filename=foo.pdf");
Response.AddHeader("content-disposition", @"attachment;filename=""MyFile.pdf""");
仅供参考。。。如果使用“内联”而不是“附件”,文件将在IE中自动打开,而不是用打开/保存对话框提示用户

Response.AppendHeader("content-disposition", string.Format("inline;FileName=\"{0}\"", fileName));

出于某种原因,大多数答案似乎都没有尝试对文件名值进行编码。如果文件包含空格、分号或引号,则可能无法正确显示

看起来您可以使用该类生成正确的标头值:

Response.AppendHeader("Content-Disposition", new ContentDisposition
{
    FileName = yourFilename
}.ToString());
您可以检查以确认它正在尝试正确编码


警告:当文件名包含破折号(而不是连字符)时,这似乎会崩溃。我还没有费心研究这个问题。

应该在文件名周围加上双引号。查看是否有人想知道为什么同时存在
AddHeader
AppendHeader
,如何将该文件名设置为动态响应@这正是我要找的。下一个问题是,我想设置一个默认文件名,这样当他们点击“保存”按钮时,它会将正确的文件名作为默认文件名。现在,文件名被设置为生成pdf的aspx页面名。有人有什么建议吗?暗淡的警告,因为Warning()破折号经常在我们的文件名中使用,所以这对我们来说是一个很大的缺点。当调用相关的网页时,我使用HttpUtility.UrlEncode(文件名),如果需要,我希望在这里也可以这样做。
Response.AppendHeader("Content-Disposition", new ContentDisposition
{
    FileName = yourFilename
}.ToString());