【问题标题】:"Content-Disposition", "inline;filename=" + filName doesnt force pdf files to show"Content-Disposition", "inline;filename=" + fileName 不会强制显示 pdf 文件
【发布时间】:2019-12-22 11:02:14
【问题描述】:

我希望在第一次点击链接时在新选项卡中显示 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>

提前感谢:)

【问题讨论】:

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


    【解决方案1】:

    这是我的例子:

    在您的操作中使用 FileResult不要重新调用 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;
    }
    
    

    【讨论】:

    • 看起来你已经得到了答案,谢谢你的帮助:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2013-10-15
    • 2011-06-18
    • 2013-06-13
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多