如何在浏览器中打开文件而不是使用 ASP.NET WebApi 下载?

1 browser file view download angular

我当前的代码如下,仅下载文件。如何在浏览器中查看所有文件类型?

[HttpGet]
    //[NoCacheHeader()]
    [Route("api/image/files")]
    public HttpResponseMessage GFiles(string ImageName)
    {
        var response = Request.CreateResponse(HttpStatusCode.OK);
        var path = "~/Image/" + ImageName;

            path = System.Web.Hosting.HostingEnvironment.MapPath(path);
            var ext = System.IO.Path.GetExtension(path);

            var contents = System.IO.File.ReadAllBytes(path);

            System.IO.MemoryStream ms = new System.IO.MemoryStream(contents);

            response.Content = new StreamContent(ms);

            //

            response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            response.Content.Headers.ContentDisposition.FileName = ImageName;
            //

            response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("Image/" + ext);
            return response;

    }
Run Code Online (Sandbox Code Playgroud)

小智 6

我找到了仅适用于 pdf 和图像的解决方案。只需在 MediaTypeHeaderValue 中添加 MIME 类型并确保 ContentDispositionHeaderValue 为“内联”

 response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("inline");
Run Code Online (Sandbox Code Playgroud)

对于 PDF:

response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
Run Code Online (Sandbox Code Playgroud)

对于图像:

response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("images/jpeg");
Run Code Online (Sandbox Code Playgroud)

根据图像类型改变 MIME。对于微软文档,在 mediaheadervalue 中使用它的 mime 类型,然后在 google chrome 中安装离线 google 文档扩展