My asp.net-Mysql application is hosted on windowsserver,when i tried to insert image into mysql table from the admin.aspx page,its displaying the error
“Object reference not set to an instance of an object.”
But from my VS I can insert image to local mysql server without any error.
When i inserted image from webadmin,it is inserted successfully and displaying image on website.I can update the contents through my admin.aspx,but when i tried to update or insert image,I am getting the error.
[NullReferenceException: Object reference not set to an instance of an object.]
Lavande.DBconnect.addimagehome(Byte[] image, String Content, String arabiccontent) in C:\Users\user\Desktop\Lavande_Asp\Lavande\Lavande\DBconnect.cs:33
Lavande.abklavande900.button_savehome_Click(Object sender, EventArgs e) in C:\Users\user\Desktop\Lavande_Asp\Lavande\Lavande\abklavande900.aspx.cs:84
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
Following is the code to read the uploaded file:
string path = System.IO.Path.GetFullPath(FileUpload_home.PostedFile.FileName);
Byte[] image = WM.ImageSetting("watermarkname", Server.MapPath("upload/") + "logo1.png", path);
DB.addimagehome(image, contentsend, arabiccontent);
watermarkclass.
public class watermark
{
public Byte[] ImageSetting(string wmText, string wmImage, string mainImage)
{
byte[] imageBytes = null;
if (File.Exists(mainImage))
{
System.Drawing.Image image = System.Drawing.Image.FromFile(mainImage);
Graphics graphic;
if (image.PixelFormat != PixelFormat.Indexed && image.PixelFormat != PixelFormat.Format8bppIndexed && image.PixelFormat != PixelFormat.Format4bppIndexed && image.PixelFormat != PixelFormat.Format1bppIndexed)
{
// Graphic is not a Indexed (GIF) image
graphic = Graphics.FromImage(image);
}
else
{
/* Cannot create a graphics object from an indexed (GIF) image.
* So we're going to copy the image into a new bitmap so
* we can work with it. */
Bitmap indexedImage = new Bitmap(image);
graphic = Graphics.FromImage(indexedImage);
// Draw the contents of the original bitmap onto the new bitmap.
graphic.DrawImage(image, 0, 0, image.Width, image.Height);
image = indexedImage;
}
graphic.SmoothingMode = SmoothingMode.AntiAlias & SmoothingMode.HighQuality;
//Text Watermark properties
Font myFont = new Font("segoe script", 17, FontStyle.Bold);
SolidBrush brush = new SolidBrush(Color.FromArgb(40, Color.White));
SizeF textSize = new SizeF();
if (wmText != "")
textSize = graphic.MeasureString(wmText, myFont);
//Image Watermark
System.Drawing.Image ig = null;
if (wmImage != "")
ig = System.Drawing.Image.FromFile(wmImage);
// Write the text watermark and image watermark across the main image.
for (int y = 0; y < image.Height; y++)
{
for (int x = 0; x < image.Width; x++)
{
PointF pointF = new PointF(x, y);
PointF pointFm = new PointF(x, y+150);
if (wmText != "")
{
graphic.DrawString(wmText, myFont, brush, pointFm);
x += Convert.ToInt32(textSize.Width);
}
if (wmImage != "")
{
graphic.DrawImage(ig, pointF);
x += Convert.ToInt32(ig.Width);
}
}
if (wmText != "")
y += Convert.ToInt32(textSize.Height);
if (wmImage != "")
y += Convert.ToInt32(ig.Height);
}
using (MemoryStream memoryStream = new MemoryStream())
{
// save image in memoryStream with it format which get it from GetImageFormat function
image.Save(memoryStream, GetImageFormat(mainImage));
imageBytes = memoryStream.ToArray();
}
graphic.Dispose();
}
return imageBytes;
}
//function to return Image Format
ImageFormat GetImageFormat(String path)
{
switch (Path.GetExtension(path).ToLower())
{
case ".bmp": return ImageFormat.Bmp;
case ".gif": return ImageFormat.Gif;
case ".jpg": return ImageFormat.Jpeg;
case ".png": return ImageFormat.Png;
default: return null;
}
}
}
}
Based on your stack trace and the code it points to, the
imagevariable there must be null. The exception is thrown when you try to look at theLengthproperty… there is no object there to use to check that property.The reason it’s null is that your
ImageSetting()function can be summarized like this:Obviously, the File.Exists() call fails, and thus you return no image. You likely should have a placeholder image you can load and use instead. Also, you should not use File.Exists() like that in the first place, as the file system is volatile. Instead, put your coding efforts into the exception handler.