RAZOR - отображать размер файла на веб-странице - PullRequest
0 голосов
/ 06 февраля 2020

Я исследовал это в течение некоторого времени и до сих пор не нашел правильного ответа. Мне нужно отобразить размер файла рядом с именем файла в моем файле .cshtml. Мне нужно использовать Razor , чтобы добиться этого ... если у кого-то нет файлового метода, который будет работать как .GetExtension(file) или .GetFileNameWithoutExtension(file).

Вот что я продолжаю сталкиваться:

enter image description here enter image description here

На левом рисунке показано, что я хочу отобразить ... фактический размер файла на диске. Правильное изображение - это то, что отображается на веб-странице, и я даже не уверен, что оно отображается, но я просто использую @file.Length, как предлагается в других постах, внутри foreach l oop, как показано ниже.

<table class="table table-responsive table-hover table-bordered table-condensed margin-bottom-none">
    <!--############ HEADER SECTION ############-->
    <tr class="bg-blue topRow-no-hover">
        <td class="width-70">
            <b>FORM NAME</b>
        </td>
        <td class="width-15">
            <b>FILE TYPE</b>
        </td>
        <td class="width-15">
            <b>PUBLISHED</b>
        </td>
    </tr>
    <!--############ BODY OF TABLE ############-->
    @foreach(var file in Directory.GetFiles(serverPath)){
        <tr class="pointer">
            <td>
                @Path.GetFileNameWithoutExtension(file)
                <a href="@Href(@path, Path.GetFileName(file))" target="_blank"></a>
            </td>
            <td>
                @getFileType(Path.GetExtension(file))
            </td>
            <td>
                @file.Length
            </td>
        </tr>
    }
</table>

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

@getFileSize(file.Length)
public string getFileSize(long source){
    const int byteConversion = 1024;
    double bytes = Convert.ToDouble(source);

    if (bytes >= Math.Pow(byteConversion, 3)) //GB Range
    {
        return string.Concat(Math.Round(bytes / Math.Pow(byteConversion, 3), 2), " GB");
    }
    else if (bytes >= Math.Pow(byteConversion, 2)) //MB Range
    {
        return string.Concat(Math.Round(bytes / Math.Pow(byteConversion, 2), 2), " MB");
    }
    else if (bytes >= byteConversion) //KB Range
    {
        return string.Concat(Math.Round(bytes / byteConversion, 2), " KB");
    }
    else //Bytes
    {
        return string.Concat(bytes, " Bytes");
    }
}

Однако, поскольку ни один из файлов не превышает 1024, все они получают КБ добавлено, как показано ниже на третьем изображении.

enter image description here enter image description here enter image description here

Если кто-либо есть какие-либо подсказки относительно того, что здесь происходит и как я могу это исправить, пожалуйста, помогите. Заранее спасибо.

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