在新标签页中打开生成的pdf文件,而不是下载..Web API

Bou*_*ory 2 c# pdf asp.net-web-api

.Net 4.6.1 C#

我在运行时生成一个pdf文件,可以成功下载.我想在新标签页中打开新创建的pdf文件,而不是下载它.这是我的代码(Web API 2.1方法):

  public HttpResponseMessage ToPDF(string cn)
    {

        var stream = new MemoryStream();
            stream = GeneratePDF();


        var result = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(stream.ToArray())
        };
        result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
        {
            FileName = "file.pdf"
        };
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");


        return result;


    }
Run Code Online (Sandbox Code Playgroud)

我认为这会奏效,但事实并非如此.我的锚标签上也有target ="_ blank".如何在新选项卡中打开我新生成的pdf文件,而不是想要将其下载到用户硬盘的浏览器?谢谢

cku*_*uri 5

除了David Mkheyan关于设置正确MIME类型的建议之外,您还需要将内容处置更改attachmentinline.

result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue(System.Net.Mime.DispositionTypeNames.Inline)
    {
        FileName = "file.pdf"
    };
Run Code Online (Sandbox Code Playgroud)

根据https://www.iana.org/assignments/cont-disp/cont-disp.xhtml attachment表示"用户控制的显示"并且inline"自动显示".