PDF 被扔到浏览器控制台,而不是下载

卡马尔

我正在使用 Rotativa从视图生成 PDF 文件,效果很好,但现在在浏览器上,我得到了控制台抛出的原始文件,没有下载对话框,没有警告,什么都没有。这是我的代码:

控制器

public ActionResult DescargarPDF (int itemId) {
        var presupuesto = ReglasNegocio.Fachada.Consultas.ObtenerPresupuesto(itemId);     
        return new Rotativa.PartialViewAsPdf("_PresupuestoFinal", presupuesto) {
            FileName = "Presupuesto_" + itemId + ".pdf",
            PageSize = Rotativa.Options.Size.A4
        };
    }

jQuery 脚本:

$(".convertirPDF").on("click", function (id) {
    var itemId = $(this).data('itemid');
    Pdf(itemId);
});

function Pdf(itemid) {
    var id = itemid;

    $.ajax({
        method: "POST",
        url: 'DescargarPDF',
        data: { itemId: id },
        cache: false,
        async: true,
    });
};

HTML 上的按钮

<button class="convertirPDF btn btn-secondary btn-info" data-itemid="@item.Id">PDF</button>

我已经在控制器上尝试了几个代码(结果相同),因为脚本和视图似乎工作正常。但是,我怀疑,也许 html 或脚本需要一些调整来通知浏览器它必须下载文件?

提前谢谢大家。

卡马尔

我找到了解决方案。这并不优雅,但它有效。所以我不一定需要使用ajax来发出请求,也不需要为按钮提供功能。我有点确定这个问题与 JS 和/或 jQuery 有关。不过,有一种更简单的方法可以做到这一点。

我将我的 html 按钮更改为:

<a href="DescargarPDF/[email protected]" target="_blank" class="btn btn-secondary btn-info">PDF</a>

所以它看起来像一个按钮,但它实际上是我的控制器方法的链接。我还删除了该按钮的脚本,现在它会下载文件。不是有意的名字,但仍然如此。

谢谢大家。快乐编码。

更新

我一直在做同一个项目,我想我找到了为什么我的 PDF 文件被扔进控制台。

问题是,jQuery 发出请求,因此 jQuery 管理响应。有那么简单吗。如果您检查的官方文档.post(),你会看到以下内容:

成功回调函数传递返回的数据,根据响应的 MIME 类型,该数据将是 XML 根元素或文本字符串。它还传递响应的文本状态。

从 jQuery 1.5 开始,成功回调函数还传递了一个“jqXHR”对象(在 jQuery 1.4 中,它传递了 XMLHttpRequest 对象)。

大多数实现将指定一个成功处理程序。

而我不是,所以,默认情况下,它只是将它放到控制台。我希望这能给这个问题带来一些启发并有所帮助。快乐编码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PDF强制下载,而不是在浏览器中打开

在浏览器中查看pdf文件,而不是下载

在浏览器中打开PDF而不是下载它

如何指示Chrome浏览器下载PDF而不是在浏览器中预览(预览)?

如何使用浏览器的PDF查看器而不是下载打开PDF Blob?

Spring-在浏览器中显示PDF文件而不是下载

(HTML)下载PDF文件,而不是单击时在浏览器中打开它们

PDF在浏览器中显示为二进制文本,而不是被下载

强制在浏览器中查看S3 PDF而不是下载

如何强制浏览器在ASP.NET Webforms中下载而不是查看PDF文档

如何下载PDF文件而不是使用dotnetbrowser在浏览器视图中打开

如何在 Django 的浏览器中嵌入 PDF 而不是下载它?

pdf在浏览器中打开,但下载后会寻找密码

Flask:强制下载pdf文件以在浏览器中打开

我想从 safari 浏览器下载 pdf

从嵌入式Tableau报表导出为PDF时,浏览器控制台中发生未经授权的错误

浏览器控制台错误

Firebase - firebase 存储文件如何从浏览器控制台变为“不可下载”?

Laravel - pdf 文件的响应返回奇怪的文本,而不是在浏览器中显示 pdf

Ruby on Rails模型字段是通过控制台而不是通过浏览器更新的

如何将这些JSON对象返回到浏览器而不是控制台

如何使用脚本控制浏览器控制台

更改pdf查看器以在Chrome浏览器中进行下载

如何从浏览器保存.pdf?

在浏览器上显示PDF

在浏览器中查看 pdf 流

反应localStorage-浏览器控制台

谷歌浏览器控制台,打印图像

从终端访问浏览器控制台?