Как получить имя файла, размер и последнюю измененную информацию о файлах всех файлов в папке в gridview? - PullRequest
0 голосов
/ 16 февраля 2019

Я знаю, как просматривать папки с Directory.GetFiles и как использовать FileInfo для информации о файлах, но я не могу понять, как соединить эти концепции.Когда я посмотрел класс Directory, я смог получить только имена файлов, так что я застрял, я могу только заставить gridview создать одномерную таблицу, но мне нужны 3 столбца для информации, указанной в заголовке.Я новичок в asp.net/c# Извините, если ответ правильный у меня на лице.Любая помощь приветствуется.

//If there are any files in the folder, get info of file

Защищено void Button1_Click (отправитель объекта, EventArgs e) {Label1.Text = "Кнопка нажата !!!";

if (Directory.GetFiles(folderpath).Length > 0)
{
    String name = FileUpload1.FileName;
    //provide file path, the name of file, then grab info of file
    FileInfo file = new FileInfo(folderpath + FileUpload1.FileName);
    //testing if we retrieved info 
    Label1.Text = ("Name :" + file.Name + "<BR/>" + "Size :" + file.Length + "<BR/>" + "Modified :" + file.LastWriteTime + "<BR/>");

    string[] allfiles = Directory.GetFiles(folderpath, "*");
    grdFile.DataSource = allfiles;
    grdFile.DataBind();
}

}

Фрагмент кода - это, скорее, мое текущее понимание, не обязательно правильная попытка того, что я пытаюсь сделать.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Вы можете получить все файлы из каталога и показать нужные вам свойства в GridView.

DirectoryInfo di = new DirectoryInfo(Server.MapPath("/"));
FileInfo[] files = di.GetFiles().OrderBy(p => p.Name).ToArray();

GridView1.DataSource = files;
GridView1.DataBind();

ASPX-код

<asp:GridView ID="GridView1" runat="server" ItemType="System.IO.FileInfo" AutoGenerateColumns="false">
    <Columns>

        <asp:TemplateField HeaderText="FileName">
            <ItemTemplate>
                <%# Item.Name %>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Size">
            <ItemTemplate>
                <%# string.Format("{0:N1}", (decimal)Item.Length / 1024) %> kb
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Modified">
            <ItemTemplate>
                <%# Item.LastWriteTime.ToLongDateString() %>
            </ItemTemplate>
        </asp:TemplateField>

    </Columns>
</asp:GridView>
0 голосов
/ 16 февраля 2019

Это странный запрос, так как вы хотите получить информацию о файловой системе в контексте веб-сервера.Поскольку они в основном всегда включены, WebServers, как правило, являются наиболее интересными целями для взлома.Чтобы компенсировать это, им обычно дают отдельного пользователя с некоторыми из наиболее ограничивающих прав, которые возможны: права на чтение в Programm and Content Directory.Может быть, иногда право написать некоторую подпапку каталога Content для целей кэширования, но даже это не гарантируется.

Что касается кода actall: в настоящее время вы получаете пути к именам файлов / полным файлам.Это все информация, которая может быть сохранена в string[].Вы можете использовать их для создания экземпляров FilInfo , которые предоставят вам оставшуюся информацию.

Возможно, вам придется создать пользовательский класс, структуру или Tupple для хранения данных для каждого файла.Затем создайте список этого типа.Переберите список имен файлов и новые экземпляры.

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