Click here to Skip to main content
6,630,901 members and growing! (18,765 online)
Email Password   helpLost your password?
Web Development » Custom Controls » General     Intermediate

File Upload Manager

By Leejo Paul

An 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
Posted:5 Mar 2005
Views:91,124
Bookmarked:77 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
15 votes for this article.
Popularity: 3.64 Rating: 3.10 out of 5
6 votes, 40.0%
1
2 votes, 13.3%
2
1 vote, 6.7%
3
1 vote, 6.7%
4
5 votes, 33.3%
5

Sample Image - maximum width is 600 pixels

Introduction

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#.

Using the code

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.

  1. <asp:TemplateColumn> which we use to display the check box.
  2. <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.
  3. this is also a boundcolumn. It stores the name of the file/directory.

The last three columns are <asp:TemplateColum>

  1. this column is used to represent the icon. ie, file or directory.
  2. used to display the name of the file or directory.
  3. used to display the size of the file.
<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);

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Leejo Paul


Member

Location: United States United States

Other popular Custom Controls articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 9 of 9 (Total in Forum: 9) (Refresh)FirstPrevNext
Generalerror Pinmembercom492:44 4 Aug '09  
Questionerror cs0260 Pinmembermiteshsolanki19842:49 26 Sep '08  
QuestionDisplay image as per the file extension PinmemberPushkar Joshi22:47 17 Oct '05  
GeneralSome issues PinmemberRobert Rohde22:44 5 Mar '05  
GeneralRe: Some issues PinsussAnonymous0:50 21 Apr '05  
GeneralRe: Some issues Pinmemberrobertonai23:01 6 Dec '05  
GeneralRe: Some issues PinmemberJorge2214:37 20 Mar '06  
GeneralRe: Some issues PinmemberSilverHair201023:37 20 Apr '06  
GeneralRe: Some issues Pinmemberhotmanmax0:11 9 Dec '06  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin 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