Как проверить расширение файла перед отображением в представлении - PullRequest
0 голосов
/ 31 января 2019

У меня есть проект, где мне нужно отображать изображения и видео.Я сохраняю URL-адрес изображения и видео в таблице с именем Images , и при получении я использую обработчик изображения для изображений, чтобы изменить его размер на уровне сервера.Прямо сейчас мой код для отображения изображений и видео - это просто строка

<td>
                                <img src="~/ImageHandler.ashx?file=@Html.DisplayFor(modelItem => item.url)" />
                            </td>

Мне нужно что-то вроде ниже, чтобы определить расширение файла перед отображением.если расширение png или jpeg, перейдите к этой строке, иначе к этой строке.Как я могу сделать, как показано ниже или любой другой лучший вариант?

                        @foreach (var item in Model)
                        {
                            <tr>
                                if (extension == .png || extension == .jpeg )
                                {
                                <td>
                                    <img src="~/ImageHandler.ashx?file=@Html.DisplayFor(modelItem => item.url)" />
                                </td>
                                }
                                else
                                {
                                <td>
                                    <video width="240" height="240" autoplay>
                                        <source src="@Html.DisplayFor(modelItem => item.url)" type="video/mp4">
                                    </video>
                                </td>
                                }
                                <td>
                                    @Html.DisplayFor(modelItem => item.details)
                                </td>
                            </tr>
                        }

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы можете использовать HttpClient, чтобы проверить тип содержимого URL-адреса, а затем решить, как его обработать:

public static class URLExt {
    public static string GetMimeType(this string url) {
        using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true })) {
            var r = client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false).GetAwaiter().GetResult();
            return r.IsSuccessStatusCode ? r.Content.Headers.ContentType.MediaType : null;
        }
    }
}
0 голосов
/ 31 января 2019

Если модель содержит только URL / путь к файлу, вы можете разделить строку с разделителем как "."и получить последний элемент в результирующем массиве строк.Например:

@foreach(var item in Model)
{
    var extn = item.url.Split(".").Last();
    if (extn == ".png" || extn == ".jpeg" )
    {
        @*Do image display*@
    }
    else
    {
       @*Do video display*@
    }
}

Не уверен, что это оптимально, но я не могу придумать другой способ сделать это.

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