Hi experts,
I have below code working to validate any image uploaded other than gif format.
But there is one issue.When i change the name of any file say a textfile to .gif,
and then try to upload the same, it passes the extension validation and gives an error in below line:
System.Drawing.Image img = System.Drawing.Image.FromStream(photocontrol.FileContent);
it says "invalid parameter".
How do i alert the user that the file is incorrect although the naming convention is ok?
ASPX code
===========
<asp:Image runat="server" ID="ImagePreview" />
<asp:FileUpload ID="Photocontrol" runat="server" />
<asp:Button ID="btnPhotoPreview" runat="server" Text="Upload" OnClick="btnPreview_Click"/>
c# code
===========
protected void btnPreview_Click(object sender, EventArgs e)
{
string[] allowed = {".gif" };
string extension = Path.GetExtension(photocontrol.FileName);
if (Array.IndexOf(allowed, extension) == -1)
{
MessageBoxShow(this, "Please upload GIF image only");
PhotoUpload.Focus();
return;
}
System.Drawing.Image img = System.Drawing.Image.FromStream(photocontrol.FileContent);
float H = (img.Height / img.VerticalResolution);
float W = (img.Width / img.HorizontalResolution);
float resolution = img.HorizontalResolution;
if (H > 1 || W > 7 || resolution < 96)
{
MessageBoxShow(this, "Please upload logo with maximum dimensions 7 inch X 1 inch and resolution not less than 100 dpi");
PhotoUpload.Focus();
return;
}
byte[] bytearray = null;
string name = "";
if (PhotoUpload.HasFile)
{
name = PhotoUpload.FileName;
Stream stream = photocontrol.FileContent;
stream.Seek(0, SeekOrigin.Begin);
bytearray = new byte[stream.Length];
int count = 0;
while (count < stream.Length)
{
bytearray[count++] = Convert.ToByte(stream.ReadByte());
}
Session["filedata"] = photocontrol.FileBytes;
ImagePreview.ImageUrl = "ImageHandler.ashx?imgpath=" + name;
}
else
{
}
}