We need you!

We're working hard on the next version of Developer Fusion. Let us know what you think we should be up to!

Members

Technology Zones

Articles

Hosted By

MaximumASP

Info

Rated
Read 96,257 times

Contents

Related Categories

Uploading Images to a Database - Working with the Uploaded Image

dave123aspx

Working with the Uploaded Image

Once the user posts the data, we have to be able to parse the binary data and send it to the database. Along with the main body of the code, we use a helper function called SaveToDB() to achieve this.

private int SaveToDB(string imgName, byte[] imgbin, string imgcontenttype)
{
    //use the web.config to store the connection string
    SqlConnection connection = new SqlConnection(ConfigurationSettings.AppSettings["DSN"]);
    SqlCommand command = new SqlCommand( "INSERT INTO Image (img_name,img_data,img_contenttype) VALUES ( @img_name, @img_data,@img_contenttype )", connection );
    SqlParameter param0 = new SqlParameter( "@img_name", SqlDbType.VarChar,50 );
    param0.Value = imgName;
    command.Parameters.Add( param0 );
    SqlParameter param1 = new SqlParameter( "@img_data", SqlDbType.Image );
    param1.Value = imgbin;
    command.Parameters.Add( param1 );
    SqlParameter param2 = new SqlParameter( "@img_contenttype", SqlDbType.VarChar,50 );
    param2.Value = imgcontenttype;
    command.Parameters.Add( param2 );
    connection.Open();
    int numRowsAffected = command.ExecuteNonQuery();
    connection.Close();
    return numRowsAffected;
}


In this function we are passing in 3 different parameters

imgName - the friendly name we want to give out image data
imgBin - the binary or Byte array of our data
imgContentType - the content type of our image. For example: image/gif or image/jpeg

There are 3 parameters as SQLParameters and defines the type. Our first SQLParameter is @img_name and is defined as a VarChar with a length of 50. The 2nd parameter, @img_data, is the binary or Byte() of data and is defined with a data type of Image. The last parameter is @img_contenttype, is defined as a VarChar with a length of 50 characters. The remainder of the function opens a connection to the database and executes the command by calling command.ExecuteNonQuery().

Calling our functions

Ok, now that we have our worker functions written, let's go ahead and get our image data.

Stream imgStream = UploadFile.PostedFile.InputStream;
int imgLen = UploadFile.PostedFile.ContentLength;
string imgContentType = UploadFile.PostedFile.ContentType;
string imgName = txtImgName.Value;
byte[] imgBinaryData = new byte[imgLen];

We need to access three important pieces of data for our example. We need the image:

Name (imgName_value)
Content-Type (imgContentType)
Image Data (imgBindaryData)

First we access to the image stream, which we are able to get by using the property UploadFile.PostedFile.InputStream. (Remember, UploadFile was the name of our upload control on the webform). We also need to know how long the Byte array we are going to create needs to be. We can get this number by calling UploadFile.PostedFile.ContentLength, and storing it's value in imgLen.

Once we have the length of the image, we create a byte array by byte[] imgBinaryData = new byte[imgLen]; We access the content type of the image by accessing the ContentType property of UploadFile.PostedFile. Lastly we need the friendly name we are going to use for the image.

Comments

  • Re: [3905] Uploading Images to a Database

    Posted by KingNetSurfer on 15 Jun 2006

    This may sound weird but I think I'm the only one not having perfect success with this.

    I'm getting a System.NullReferenceExc...

  • Image upload and thumbnails

    Posted by zioturo on 02 Nov 2005

    The easiest way to upload and resize an image to the internet and automatically create thumbnails is I-Load.
    I-Load is a FREE ASP.NET web control with numerous benefits and features.
    You can downloa...

  • Uploading

    Posted by harshguglani on 03 Sep 2005

    Hi, Whts the benifit of uploading images in database server when i can place images on web server in my directory and accesss them. Reply soon.

  • enctype?

    Posted by LesBillBell on 02 Aug 2005

    The explanatory text says "The first interesting point about our webform, is the attribute "enctype". Enctype tells the browser and server that we will be uploading some type of binary data" but I don...

  • Posted by LinuxGold on 08 Jul 2005

    Better control of file updates. On file server, anybody can update files without letting anyone know about it. If you store a file inside SQL database, it will show who last updated files, inform us...