Description

This application is in ASP.NET which will allow you to upload images to an XML file which serves as the database for the uploaded files. You can retrieve these files along their properties from the xml file.

In this application I have made use of asp.net Web controls as well as Html controls. I have used a cascading stylesheet for formatting purpose. Xml file serves as a database for the uploaded files. The upload.aspx file is to upload the images to the database and show.aspx file is to retrieve the files from the database. Apart from this there is mystyle.css file which is a stylesheet and there is upload.xml file which stores all the uploaded files.

Code for upload.aspx:

<%@ Page Language="C#" EnableSessionState="False" %>

<%@ Import Namespace="System" %>

<%@ Import Namespace="System.IO" %>

<%@ Import Namespace="System.Data" %>

<%-- These are the imported namespaces needed to run the guest book --%>

<html>

<head>

<title>Uploading Files.</title>

<script language="C#" runat="server">

//This method is called when the upload button is clicked

public void Submit_Click(Object sender, EventArgs e)

{

//the path to the Xml file which will contain all the data

string dataFile = "db/upload.xml";

try

{

//proceed only if the file is posted

if (file.PostedFile != null)

{

errmess.Text = "";

//Open a FileStream to the Database in read mode

FileStream fin;

fin = new FileStream(Server.MapPath(dataFile), FileMode.Open, FileAccess.Read,

FileShare.ReadWrite);

//Create a DataSet object

DataSet guestData = new DataSet();

//Read data from the Database

guestData.ReadXml(fin);

fin.Close();

//extract the filename from the full file path

string nam = file.PostedFile.FileName;

int i = nam.LastIndexOf("\\");

string newnm = nam.Substring(i);

//Create a new DataRow from the DataSet Schema

DataRow newRow = guestData.Tables[0].NewRow();

//Fill the DataRow with form values

newRow["title"] = title.Text;

newRow["file"] = file.PostedFile.FileName;

newRow["length"] = file.PostedFile.ContentLength.ToString();

newRow["contenttype"] = file.PostedFile.ContentType;

//Add the row to the DataSet

guestData.Tables[0].Rows.Add(newRow);

//Create another filestream to the DataBase file in write mode

FileStream fout;

fout = new FileStream(Server.MapPath(dataFile), FileMode.Open, FileAccess.Write,

FileShare.ReadWrite);

guestData.WriteXml(fout, XmlWriteMode.WriteSchema);

fout.Close();

//Hide the Form Panel

formPanel.Visible = false;

//Display the view Panel

thankPanel.Visible = true;

}

}

catch (Exception edd)

{

//catch any other exception that occur

errmess.Text = "Cannot write to XML file because " + edd.ToString();

}

}

</script>

</head>

<link href="mystyle.css" type="text/css" rel="stylesheet">

<body topmargin="0" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0">

<%-- Include a header file 'header.inc' --%>

<!-- #Include File="header.inc" -->

<asp:Label ID="errmess" Text="" Style="color: #FF0000" runat="server" />

<asp:Panel ID="formPanel" runat="server">

<form id="Form1" runat="server" enctype="multipart/form-data" action="upload.aspx">

<table border="0" width="80%" align="Center">

<tr class="rowstyle">

<td>

Title :</td>

<td>

<asp:TextBox class="textstyle" Text="" ID="title" runat="server" />

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="title"

Display="static" runat="server">*</asp:RequiredFieldValidator></td>

</tr>

<tr class="rowstyle">

<td>

File :</td>

<td>

<input type="file" class="textstyle" text="" id="file" runat="server" />

<asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="file"

Display="static" runat="server">*</asp:RequiredFieldValidator></td>

</tr>

<tr class="rowstyle">

<td colspan="2">

<asp:Button class="buttonstyle" ID="write" Text="Upload" OnClick="Submit_Click"

runat="server" /></td>

</tr>

</table>

</form>

</asp:Panel>

<asp:Panel ID="thankPanel" Visible="false" runat="server">

<p class="messagestyle" align="center">

<b>Your file has been uploaded!</b><br>

</p>

<p align="center">

<a href="show.aspx">Click here </a>to view Uploaded files.</p>

</asp:Panel>

</body>
</html>

Code for show.aspx:

<%@ Page Language="C#" %>

<%@ Import Namespace="System" %>

<%@ Import Namespace="System.IO" %>

<%@ Import Namespace="System.Data" %>

<%-- Needed Assembiles --%>

<html>

<head>

<title>Uploading files</title>

<script language="C#" runat="server">

//run the script when the Page is Loaded

public void Page_Load(Object sender, EventArgs e)

{

//the path to the Xml file which will contain all the data

string datafile = "db/upload.xml";

try

{

//create a DataSet object

DataSet guestData = new DataSet();

//Open a FileStream to the Database

FileStream fin;

fin = new FileStream(Server.MapPath(datafile), FileMode.Open, FileAccess.Read,

FileShare.ReadWrite);

//Read the Database into the DataSet

guestData.ReadXml(fin);

fin.Close();

//Databind the first table in the Dataset to the Repeater

MyDataList.DataSource = guestData.Tables[0].DefaultView;

MyDataList.DataBind();

}

catch (Exception ex)

{

//catch any other exceptions that occur

errmess.Text = "Cannot read from XML file because " + ex.ToString();

}

}

</script>

<link href="mystyle.css" type="text/css" rel="stylesheet">

</head>

<body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" rightmargin="0">

<!-- #Include File="header.inc" -->

<asp:Label ID="errmess" Text="" Style="color: #FF0000" runat="server" />

<br>

<asp:Repeater ID="MyDataList" runat="server">

<HeaderTemplate>

<table width="100%" style="font: 8pt verdana" align="center">

<tr style="background-color: tan">

<th>

Title</th>

<th>

File</th>

<th>

Length(In Bytes)</th>

<th>

Content Type</th>

</tr>

</HeaderTemplate>

<ItemTemplate>

<tr style="background-color: beige">

<td>

<%# DataBinder.Eval(Container.DataItem, "title") %>

</td>

<td>

<%# DataBinder.Eval(Container.DataItem, "file") %>

</td>

<td>

<%# DataBinder.Eval(Container.DataItem, "length") %>

</td>

<td>

<%# DataBinder.Eval(Container.DataItem, "contenttype") %>

</td>

</tr>

</ItemTemplate>

<FooterTemplate>

</table>

</FooterTemplate>

</asp:Repeater>

</body>
</html>