Показать поток файлов в браузере в asp core 3 - PullRequest
0 голосов
/ 26 марта 2020

Я написал этот код для файла шоу потока в браузере:

public IActionResult GetAvatar()
{
    var id = httpContextAccessor.HttpContext.User.Identity.GetUserId<long>();
    if (id > 0)
    {
        var user = dispatchers.QueryAsync(new GetUserByIdQuery { id = id }).Result;
        if (user.Success)
        {
            return PhysicalFile(Path.Combine(this.finder.PathAvatarUserUploadFolder(), user.Result.Photo), "application/octet-stream");
        }
        return BadRequest(user.ErrorMessage);
    }
    return BadRequest("Id not valid");
}

эта строка: return PhysicalFile(Path.Combine(this.finder.PathAvatarUserUploadFolder(), user.Result.Photo), "application/octet-stream");

Но у него есть проблема, потому что, когда я ввожу URL в браузере, он загружает файл, и он должен go загрузить и открыть этот файл.

Мне нужно открыть файл в браузере. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 26 марта 2020

Когда вы проверяете заголовки ответов, используя Chrome Инструменты разработчика или Fiddler, какой заголовок Content-Disposition установлен? Если установлено значение attachment, браузер всегда будет загружать файл. Вы можете установить для Content-Disposition значение inline, чтобы браузер показывал содержимое, если это было возможно, встроенным, и предлагал загрузку, если он не может отображать содержимое. Этот заголовок может быть установлен по-разному, но самым простым будет добавить заголовок прямо перед возвратом содержимого файла, как показано ниже.

Response.Headers["Content-Disposition"] = $"inline; filename={user.Result.Photo}";

return PhysicalFile(Path.Combine(this.finder.PathAvatarUserUploadFolder(), user.Result.Photo), "application/octet-stream");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...