Ошибка при просмотре PDF документа в браузере - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь просмотреть файл PDF / doc / img в браузере, но получаю сообщение об ошибке:

Невозможно загрузить документ PDF

Код:

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;
}

Репо:

public void GetFileStream(string fileName, string filePath, out Stream stream)
{
    stream = new MemoryStream();
    using (var fileStream = File.OpenRead(Path.Combine(filePath, fileName)))
    {
        if (fileStream.CanSeek) fileStream.Seek(0, SeekOrigin.Begin);

        fileStream.CopyTo(stream);
    }
}

Запрос браузера:

enter image description here

Я просто хочу разрешить пользователю просматривать содержимое файла в браузере, а не СКАЧАТЬ .

Буду признателен за любую помощь:)

Обновление: enter image description here

enter image description here

1 Ответ

0 голосов
/ 19 мая 2018

Длина содержимого ответа равна нулю (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;
}

Если длина содержимого все еще равна нулю, вам необходимо проверить, что загружаемый файл имеет фактическое содержимое для чтения.

...