文件上传管理器

分享于 

7分钟阅读

Web开发

  繁體

Sample Image - maximum width is 600 pixels

介绍

代码用于将文件上载到服务器。在服务器上创建文件。在网格中显示文件和目录,以及用户选择的文件和目录。

我把 ASP.NET 和 C# 编码了。

使用代码

要使用本文,只需将. aspx 和. cs 文件包含到项目中。 你还必须将命名空间更改为 C# 文件中的命名空间。 代码的细节如下所示。

.aspx 文件中的主要部分是 ASP:DataGrid,它充当用户界面。 DataGird有六列,每个列的函数如下。

  • <asp:TemplateColumn>,我们用来显示复选框。
  • <asp:boundcolumn> 用于存储一个值为D 或者F的值。 D 表示行中的项为目录,F 表示该项为文件。
  • 这也是一个抽象。 它存储文件/目录的名称。

最后三列是 <asp:TemplateColum>

  • 这里列用于表示 icon。 IE,文件或者目录。
  • 用于显示文件或者目录的名称。
  • 用于显示文件的大小。
<asp:datagridid="DataGrid1"runat="server"CssClass="griddatastyle"Width="551px"AutoGenerateColumns="false"BackColor="#6699cc"BorderColor="#cccccc"><alternatingitemstyleCssClass="GridAlternatingDataStyle"></alternatingitemstyle><pagerstyleForeColor="#FFFFFF"BackColor="#6699CC"></pagerstyle><headerstyleHorizontalAlign="Left"Font-Size="8pt"ForeColor="White"BackColor="#6699CC"Wrap="False"></headerstyle><itemstyleFont-Size="Smaller"></itemstyle><columns><asp:templatecolumnItemStyle-Width="1%"><itemtemplate><asp:checkboxID="chk"runat="server"/></itemtemplate></asp:templatecolumn><asp:boundcolumnVisible="false"DataField="Type"HeaderText="Type"></asp:boundcolumn><asp:boundcolumnVisible="false"DataField="Name"HeaderText="HidName"></asp:boundcolumn><asp:templatecolumnItemStyle-Width="5%"><headertemplate></headertemplate><itemtemplate><imgsrc="<%# DataBinder.Eval(Container.DataItem,"FileIcon") %>"> 
 </itemtemplate></asp:templatecolumn><asp:templatecolumnItemStyle-Width="50%"><headertemplate> Name
 </headertemplate><itemtemplate><asp:LinkButtonid="LinkButton1"CommandName='<%# DataBinder.Eval(Container.DataItem,"Type") %>'CommandArgument='<%# DataBinder.Eval(Container.DataItem,"Name")%>'Text='<%# DataBinder.Eval(Container.DataItem,"Name") %>'runat="server">LinkButton</asp:LinkButton></td></tecolumn><asp:templatecolumnItemStyle-Width="15%"><headertemplate> Size
 </headertemplate><itemtemplate><%# DataBinder.Eval(Container.DataItem,"Size") %></itemtemplate></asp:templatecolumn><asp:boundcolumnHeaderText="Creation Time"DataField="CreationTime"SortExpression="CreationTime"ItemStyle-Width="15%"ItemStyle-Wrap="false"></asp:boundcolumn></columns></asp:datagrid>

三个 ItemTemplatesDataTable 中获取我们在 C# 文件中填充的值,我们将很快看到。

现在我们将查看文件后面的C# 代码。

DemoFileManager.aspx.cs 中的代码比较简单。 我们首先使用 FillGrid 来创建一个。 这里的想法是先创建一个 DataTable

DataTable dt=new DataTable("datatable1");
DataColumn dc;
DataRow dr;
dr=dt.NewRow();
dc= new DataColumn();
dc.DataType=System.Type.GetType("System.String");
dc.ColumnName="Name";
dt.Columns.Add(dc);
dc= new DataColumn();
dc.DataType=System.Type.GetType("System.Int32");
dc.ColumnName="Size";
dt.Columns.Add(dc);
...

注意,我们必须声明一个 DataColumn,指定它的数据类型,它的名称,然后添加到 DataTable。 指定列后,使用 Directory.GetDirectories 函数获取目录中所有子目录的列表,我使用"uploadfile"作为上传的基础目录。

subdirectoryEntries
 = Directory.GetDirectories(Server.MapPath(".uploadfile"));foreach(string directoryName in subdirectoryEntries)
{
 dr = dt.NewRow();
 DirectoryInfo di = new DirectoryInfo(directoryName);
 dr[0] = di.Name;
 dr[1] = 1000; //(dirSize(di)/1000) + 1; dr[2] = di.CreationTime;
 dr[3] = "D";
 dr[4] = "images/folder.gif";
 dt.Rows.Add(dr);
}

同样我们用 Directory.GetFiles(Server.MapPath(".uploadfile")) 获取"uploadfile"目录中的文件并将它的添加到表中。 一旦完成所有这些操作,就把DataTable绑定到 DataGrid。

DataView dv = new DataView(dt);
DataGrid1.DataSource= dv;
DataGrid1.DataBind();

下一节是上传文件。 本节很简单。我们使用下面的代码浏览并选择文件。 然后我们执行一些简单
用于提取文件名称并将它的上载到服务器的字符串操作。 我没有编写将文件上载到除基本目录之外的目录的代码。

File1.PostedFile.FileName.Substring(File1.PostedFile.FileName.LastIndexOf(
 "") + 1) ;

Delete 函数检查是否有选中的复选框。 如果选中复选框,则检查检查的项是否是目录或者文件和 delete。 如果选中的项是目录,则使用下列代码。

Directory.Delete (Server.MapPath("uploadfile" + gridItem.Cells[2].Text),
 true);

如果选中的项是文件,则使用下列代码。

File.Delete (Server.MapPath("uploadfile" + gridItem.Cells[2].Text));

" griditem.cells [2]. text"部分为我们提供所选文件/目录的名称。 我们使用 delete 按钮一旦使用 delete 按钮,我们就可以使用

FillGrid("",0);

在文本框中输入一个名称并单击"创建新目录"按钮在上传目录下创建一个新的导演。 这是创建目录的代码。

DirectoryInfo df = Directory.CreateDirectory(
 Server.MapPath("uploadfile")+dir_name);

相关文章