在浏览器中查看PDF文档时出错

时间:2018-05-19 11:41:41

标签: c# asp.net-core asp.net-core-webapi

我正在尝试在浏览器中查看PDF / doc / img文件,但收到错误:

  

无法加载PDF文档

代码:

function placeParams(pathRegex, params) {
  var segments = pathRegex.split("/")
  return segments.map(segment => {
    var offset = segment.indexOf(":") + 1
    if (!offset)
      return segment

    var key = segment.slice(offset)
    return params[key]
  }).join("/")
}

console.log(placeParams("/:locale/kappa", { locale: "en" }))

回购:

private readonly IServiceContext _ctx;
public void View(string guid)
{
    var stream = null as Stream;
    repo.GetFileStream(fileName, filePath, out stream);
    if (stream.CanSeek)
    {
        stream.Seek(0, SeekOrigin.Begin);
    }
    _ctx.reqObj.HttpContext.Response.ContentType = "application/pdf";
    _ctx.reqObj.HttpContext.Response.Headers.Add("Content-Disposition", "inline; filename=" + fileName);
    _ctx.reqObj.HttpContext.Response.Body = stream;
}

浏览器请求:

enter image description here

我只是想让用户在浏览器中查看文件内容,而不是下载

我将不胜感激任何帮助:)

更新 enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

根据提供的图像中的响应头,响应的内容长度为零(0)。

考虑将标题添加到响应中。

public void View(string guid) {
    var stream = null as Stream;
    repo.GetFileStream(fileName, filePath, out stream);
    if (stream.CanSeek) {
        stream.Seek(0, SeekOrigin.Begin);
    }
    var response = _ctx.reqObj.HttpContext.Response;
    response.ContentType = "application/pdf";
    response.Headers.Add("Content-Disposition", $"inline; filename={filename}");
    response.Headers.Add("Content-Length", stream.Length.ToString());
    response.Body = stream;
}

如果内容长度仍为零,那么您需要检查正在加载的文件是否具有要读取的实际内容。