gpt4 book ai didi

c# - 操作名称显示在浏览器的 PDF 工具栏中。设置ContentDisposition不会影响它

转载 作者:行者123 更新时间:2023-12-02 06:12:09 24 4
gpt4 key购买 nike

Controller 代码:

[HttpGet]
public FileStreamResult GETPDF(string guid)
{
var stream = XeroHelper.GetXeroPdf(guid).Result;
stream.Position = 0;
var cd = new ContentDisposition
{
FileName = $"{guid}.pdf",
Inline = true
};

Response.AppendHeader("Content-Disposition", cd.ToString());
return File(stream, "application/pdf");
}

如您所见,该方法的名称是 GETPDF。你还可以看到我正在ContentDisposition头中配置文件名的名称。如果您看到下面的内容,您将看到方法名称用作工具栏中的标题,而不是文件名。

enter image description here

文件名确实会永久保留。当我单击“下载”时,文件名是文件选择器中使用的默认值(请注意,我更改了名称以隐藏敏感 GUID):

enter image description here

如果有人有任何想法如何重命名该工具栏的标题,我们将不胜感激。

顺便说一句,这不是以下内容的重复项: C# MVC: Chrome using the action name to set inline PDF title因为没有答案被接受,并且唯一获得赞成票的答案已在我上面的方法中实现,但仍然不起作用。

编辑 - 澄清一下,我不想在新选项卡中打开 PDF。我想将其显示在我页面的查看器中。我提供的代码已经发生了这种行为,这只是标题错误并且来 self 的 Controller 方法名称。使用 Controller 代码,然后我将其显示在 View 中,如下所示:

<h1>Quote</h1>
<object data="@Url.Action("GETPDF", new { guid = @Model.QuoteGuid })" type="application/pdf" width="800" height="650"></object>

最佳答案

尝试这样的事情:

    [HttpGet]
public FileResult GETPDF(string guid)
{
var stream = XeroHelper.GetXeroPdf(guid).Result;

using (MemoryStream ms = new MemoryStream())
{
stream.CopyTo(ms);

// Download
//return File(ms.ToArray(), "application/pdf", $"{guid}.pdf");

// Open **(use window.open in JS)**
return File(ms.ToArray(), "application/pdf")
}
}

更新:基于查看者的提及。

要嵌入页面,您可以尝试 <embed>标签或 <object>标签

这是一个例子 Recommended way to embed PDF in HTML?

即:

<embed src="https://drive.google.com/viewerng/
viewer?embedded=true&url=[YOUR ACTION]" width="500" height="375">

可能需要尝试使用第三个参数的 File 方法来查看哪个有效。如果在文件名中设置了标题,则可能会显示为标题。(虽然不确定下载会做什么,也许可以设置一个带有 pdf 名称的下载链接)

更新2:另一个想法:

你如何调用该网址?

您是否指定:GETPDF?guid=XXXX

也许可以尝试:GETPDF/XXXX (您可能需要为此调整路由,或者如果这是默认值,则调用参数“id”)

关于c# - 操作名称显示在浏览器的 PDF 工具栏中。设置ContentDisposition不会影响它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60535944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com