javascript - "Content-Disposition", "inline;filename="+ fileName 不强制显示 pdf 文件

标签 javascript c# html angularjs asp.net-mvc

我希望当首先单击链接时在新选项卡中显示 pdf 文件作为预览,然后允许用户下载该文件。

所以我寻找答案,他们大多说我应该包含这两个标题

Response.AddHeader("Content-Disposition", "inline; filename=\"" + filName + "\"");
Response.AddHeader("Content-Type", "application/pdf");

但它不起作用,pdf 文件才开始下载。这是我的代码:

C#:

public FileContentResult GetVisaAproveFile(Guid id)
    {
        var request = visaRequestRepository.GetById(id);
        AttachedFile ApprovedAttachedFile = request.AttachedFiles.FirstOrDefault(f => f.DocType == DocType.ApprovedDocument);
        byte[] filByte = ApprovedAttachedFile?.FileContent ?? new byte [0];
        string filName = ApprovedAttachedFile?.AttachFileSource ?? "بدون عنوان";
        Response.Clear();
        Response.AddHeader("Content-Type", "application/pdf");
        Response.AddHeader("Content-Disposition", "inline; filename=\"" + filName + "\"");
        return File(filByte, MimeMapping.GetMimeMapping(filName));
    }

JavaScript:

$scope.onShowCertificate = function (e) {
        debugger;
        var id = e.key.VisaReqId;

        var url = $window.location.origin + "/UploadFile/GetVisaAproveFile/?id=" + id;
        $window.open(url, '_blank');

    };

HTML:

<div data-options="dxTemplate:{ name:'Certificate' }">
                            <i class='glyphicon glyphicon-download-alt ajaxresub'
                               ng-if="item.value == 8"
                               style='color: blue;cursor: pointer !important;'
                               ng-click="onShowCertificate(item)"></i>
 </div>

提前致谢:)

最佳答案

这是我的例子:

在您的操作中使用FileResult不要 reutrn File()。

返回FileStreamResult()

[HttpGet]
public FileResult GetVisaAproveFile(string id)
{
  //skip content
  //Put your PDF in MemoryStream 
  MemoryStream msResult = ReadPDF();

  var fileResult = new FileStreamResult(msResult, "application/pdf");
  Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}.pdf", id));

  return fileResult;
}

关于javascript - "Content-Disposition", "inline;filename="+ fileName 不强制显示 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59443630/

相关文章:

javascript - 有没有办法从 chrome 的存储图像中获取 url?

javascript - 反复绘制更新图像到 Canvas (Safari 在加载期间清空图像)

c# - SQL 参数化查询不显示结果

html - 标题居中,按钮位于同一行

css - 如何让页脚停留在网页底部?

javascript - 如何调整光滑轨道上图像的宽度

javascript - 鼠标光标在 Javascript 中的位置?

c# - 如何在 ASP.net 5 中使用 Controller 之外的 session ?

c# - 如何在一个项目中使用两个不同的 Microsoft Interop 程序集?

ajax - 为什么我的grails复选框onclick远程功能ajax调用显示更新错误?