我正在尝试在浏览器中查看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;
}
浏览器请求:
我只是想让用户在浏览器中查看文件内容,而不是下载。
我将不胜感激任何帮助:)
答案 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;
}
如果内容长度仍为零,那么您需要检查正在加载的文件是否具有要读取的实际内容。