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>