![]() |
Web Development »
Custom Controls »
General
Intermediate
File Upload ManagerBy Leejo PaulAn article on how to upload files to a server and how to display the directories and files in a ASP.NET DataGrid |
C#, Windows, .NET, ASP.NET, Visual Studio, WebForms, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
This code is used to upload files to the server, Create files on the server, display the files and directories in a Grid and to delete the files and directories that the user has selected.
I have coded this ASP.NET and C#.
To use the article, just include the .aspx and .cs files to your project. You will also have to change the namespace to your namespace in the C# file. The Details of the code is as follows.
The main part in the .aspx file is the ASP:DataGrid which acts as the user interface. The DataGird has six columns the function of each columns are as follows.
<asp:TemplateColumn> which we use to display the check box.
<asp:boundcolumn> is used to store a value which is either D or F. D means that the item in the row is a directory and F means that the item is a File.
The last three columns are <asp:TemplateColum>
<asp:datagrid id="DataGrid1" runat="server" CssClass="griddatastyle"
Width="551px" AutoGenerateColumns="false" BackColor="#6699cc"
BorderColor="#cccccc">
<alternatingitemstyle CssClass="GridAlternatingDataStyle">
</alternatingitemstyle>
<pagerstyle ForeColor="#FFFFFF" BackColor="#6699CC"></pagerstyle>
<headerstyle HorizontalAlign="Left" Font-Size="8pt" ForeColor="White"
BackColor="#6699CC" Wrap="False"></headerstyle>
<itemstyle Font-Size="Smaller"></itemstyle>
<columns>
<asp:templatecolumn ItemStyle-Width="1%">
<itemtemplate>
<asp:checkbox ID="chk" runat="server" />
</itemtemplate>
</asp:templatecolumn>
<asp:boundcolumn Visible="false" DataField="Type" HeaderText="Type">
</asp:boundcolumn>
<asp:boundcolumn Visible="false" DataField="Name" HeaderText="HidName">
</asp:boundcolumn>
<asp:templatecolumn ItemStyle-Width="5%">
<headertemplate>
</headertemplate>
<itemtemplate>
<img src="<%# DataBinder.Eval(Container.DataItem,"FileIcon") %>">
The three ItemTemplates get the value from the DataTable that we populate in the C# file as we will soon see.
We will now look into the C# code behind file.
The code in the DemoFileManager.aspx.cs is relatively simple. We first poplute the DataGrid using the FillGrid. The idea here is to first create a 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);
...
Note that we have to declare a DataColumn, specify its DataType, its name and then add to the DataTable. Once the columns are specified, we use the Directory.GetDirectories function to get the list of all the subdirectories inside the directory called "uploadfile", which i use as the base directory for upload.
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);
}
similarly we use Directory.GetFiles(Server.MapPath(".\\uploadfile\\")) to get the files inside "uploadfile" directory and we add it to the table. Once all that is done we bind the DataTable to the DataGrid.
DataView dv = new DataView(dt);
DataGrid1.DataSource= dv;
DataGrid1.DataBind();
The next section is the UpLoad File. This section is simple. We use the following code to browse and select the file. We then perform some simple
string operation to extract the name of the file and upload it to the server. I have not written the code to upload the file to directories other than the base directory.
File1.PostedFile.FileName.Substring(File1.PostedFile.FileName.LastIndexOf(
"\\") + 1) ;
The Delete function checks if there is any checked checkbox. If the check box is checked, we check to see if the checked item is a directory or file and delete accordingly. if the selected item is Directory the following code is used.
Directory.Delete (Server.MapPath("\\uploadfile\\" + gridItem.Cells[2].Text),
true);
if the selected item is file the follwing code is used.
File.Delete (Server.MapPath("\\uploadfile\\" + gridItem.Cells[2].Text));
The "gridItem.Cells[2].Text" section gets us the name of the file/directory selected. Once we delete using the Delete button we refresh the grid using
FillGrid("",0);
Entering a name in the text box and them clicking on the �Create New Directory� button creates a new director under the upload directory. This is the code to create the directory.
DirectoryInfo df = Directory.CreateDirectory(
Server.MapPath("\\uploadfile\\")+dir_name);
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 5 Mar 2005 Editor: Chris Maunder |
Copyright 2005 by Leejo Paul Everything else Copyright © CodeProject, 1999-2009 Web22 | Advertise on the Code Project |