Image Gallery and AdRotator
CodeKeep C# Feed Luglio 13th, 2008
Description: Add images via a form to an image datalist or create/append an XML file which is used by an AdRotator control.Link: http://www.codekeep.net/snippets/355fc725-81b4-4d1c-a4ad-3ade31c01095.aspx
using System;
using System.Xml;
using System.IO;
partial class WebUserControl : System.Web.UI.UserControl
{
public void Page_Load(Object sender, EventArgs e)
{
btnImage.Click += (Button_Click);
}
protected bool imageIsAd;
protected void AdRadio_CheckedChanged(object sender, EventArgs e)
{
imageIsAd = true;
}
protected void GalleryRadio_CheckedChanged(object sender, EventArgs e)
{
imageIsAd = false;
}
public void Button_Click(object sender, EventArgs e)
{
if (!imageUpload.HasFile) return;
if (!imageIsAd)
{
var filePath = "~/Assets/Images/" + imageUpload.FileName;
imageUpload.SaveAs(MapPath(filePath));
}
var adPath = "~/Assets/Ads/" + imageUpload.FileName;
imageUpload.SaveAs(MapPath(adPath));
WriteXml();
ImageLink.Text = String.Empty;
AltText.Text = String.Empty;
}
void Page_PreRender()
{
var imgFolder = MapPath("~/Assets/Images/");
var dir = new DirectoryInfo(imgFolder);
dlstImages.DataSource = dir.GetFiles();
dlstImages.DataBind();
}
protected void WriteXml()
{
if (!imageIsAd) return;
System.Drawing.Image UppedImage = System.Drawing.Image.FromStream(imageUpload.PostedFile.InputStream);
float UploadedImageWidth = UppedImage.PhysicalDimension.Width;
float UploadedImageHeight = UppedImage.PhysicalDimension.Height;
var imagePath = "~/Assets/Ads/" + imageUpload.FileName;
// *Insert* var xmlFile = Absolute Path of XML file (use Literal)
var xmlFileInfo = new FileInfo(xmlFile);
if (!xmlFileInfo.Exists)
{
var writer = new XmlTextWriter(xmlFile, null);
writer.WriteStartDocument();
writer.WriteRaw("\n");
writer.WriteStartElement("Advertisements");
writer.WriteRaw("\n");
writer.WriteStartElement("Ad");
writer.WriteRaw("\n");
writer.WriteStartElement("", "ImageUrl", "");
writer.WriteString(imagePath);
writer.WriteEndElement();
writer.WriteRaw("\n");
writer.WriteStartElement("", "Width", "");
writer.WriteString(UploadedImageWidth.ToString());
writer.WriteEndElement();
writer.WriteRaw("\n");
writer.WriteStartElement("", "Height", "");
writer.WriteString(UploadedImageHeight.ToString());
writer.WriteEndElement();
writer.WriteRaw("\n");
writer.WriteStartElement("", "NavigateUrl", "");
writer.WriteString(ImageLink.Text);
writer.WriteEndElement();
writer.WriteRaw("\n");
writer.WriteStartElement("", "AlternateText", "");
writer.WriteString(AltText.Text);
writer.WriteEndElement();
writer.WriteRaw("\n");
writer.WriteEndElement();
writer.WriteRaw("\n");
writer.WriteEndElement();
writer.WriteRaw("\n");
writer.WriteEndDocument();
writer.Close();
}
else
{
var xdoc = new XmlDocument();
xdoc.Load(xmlFile);
var adverts = xdoc.SelectSingleNode("Advertisements");
XmlElement ad = xdoc.CreateElement("Ad");
XmlElement img = xdoc.CreateElement("ImageUrl");
img.InnerText = imagePath;
XmlElement width = xdoc.CreateElement("Width");
width.InnerText = UploadedImageWidth.ToString();
XmlElement height = xdoc.CreateElement("Height");
height.InnerText = UploadedImageHeight.ToString();
XmlElement navUrl = xdoc.CreateElement("NavigateUrl");
navUrl.InnerText = ImageLink.Text;
XmlElement xaltText = xdoc.CreateElement("AlternateText");
xaltText.InnerText = AltText.Text;
adverts.AppendChild(ad);
ad.AppendChild(img);
ad.AppendChild(width);
ad.AppendChild(height);
ad.AppendChild(navUrl);
ad.AppendChild(xaltText);
xdoc.Save(xmlFile);
}
}
}