Как создать href Скачать ссылки на файлы с произвольными расширениями - PullRequest
0 голосов
/ 28 июня 2019

У меня есть файлы разных расширений, на которые я создаю ссылки для скачивания в Razor Page View.Например:

<a href="@Model.DownloadFile.FilePath" download="@Model.FileDownloadName" class="btn btn-outline-primary">Download</a>

это работает для файлов с расширением .md или .txt.Но для других расширений я получаю

Failed - Нет файла

при загрузке в Chrome.При непосредственном просмотре файла я получаю 404.

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

Я использую ASP.NET Core 2.2 с Razor Pages и Bootstrap.Моя директория загрузки находится в папке wwwroot, и у меня есть app.UseStaticFiles(); в моем методе Configure.

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Обслуживание неизвестных типов файлов - плохая идея.Это угроза безопасности, и даже документация предупреждает вас против ее использования.Если расширения файлов, которые вам нужно обслуживать, известны, то вместо них вы должны добавить сопоставления типов mime:

services.Configure<StaticFileOptions>(o =>
{
    var provider = new FileExtensionContentTypeProvider();

    // Repeat this for each extension you need to map.
    provider.Mappings[".foo"] = "text/plain";

    o.ContentTypeProvider = provider;
});
0 голосов
/ 28 июня 2019

Исправлено путем изменения моего метода настройки с

app.UseStaticFiles();

на

app.UseStaticFiles(new StaticFileOptions
        {
            ServeUnknownFileTypes = true,
            DefaultContentType = "image/png"
        });

Дополнительная информация: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-2.2#non-standard-content-types

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...