Rajesh
Rajesh

Reputation: 1620

How to Upload Selected Multiple Images into the Database

I need to Upload Image selected in the Website into the DB My project has multiple File Select "File Upload" how can I Upload those multiple Files into Database the Image data in Binary Format, My Code is

    protected void Button1_Click(object sender, EventArgs e)

   {

        string Qry = "insert into tblFiles values(@data)";
        SqlConnection con = new SqlConnection(@"Data Source=ESLHPC17\SQL2008;Initial Catalog=dbFiles;User ID=user;Password=password");

        SqlCommand cmd = new SqlCommand(Qry,con);
        cmd.Parameters.Add("@data") = FileUpload1.FileBytes;

    }

I am using the Following Web Handler to Save the Files in local Folder

<%@ WebHandler Language="C#" Class="Upload" %>

using System;
using System.Web;
using System.IO;


public class Upload : IHttpHandler {

public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/plain";
    context.Response.Expires = -1;
    try
    {
        HttpPostedFile postedFile = context.Request.Files["Filedata"];

        string savepath = "";
        string tempPath = "";
        tempPath = System.Configuration.ConfigurationManager.AppSettings["FolderPath"]; 
        savepath = context.Server.MapPath(tempPath);
        string filename = postedFile.FileName;
        if (!Directory.Exists(savepath))
            Directory.CreateDirectory(savepath);

        postedFile.SaveAs(savepath + @"\" + filename);
        context.Response.Write(tempPath + "/" + filename);
        context.Response.StatusCode = 200;
    }
    catch (Exception ex)
    {
        context.Response.Write("Error: " + ex.Message);
    }
}

public bool IsReusable {
    get {
        return false;
    }
}

}

and I use the below Script

 <script type = "text/javascript">
      $(window).load(
function () {
    $("#<%=FileUpload1.ClientID%>").fileUpload({
        'uploader': 'scripts/uploader.swf',
        'cancelImg': 'images/cancel.png',
        'buttonText': 'Browse Files',
        'script': 'Upload.ashx',
        'folder': 'Uploads',
        'fileDesc': 'Image Files',
        'fileExt': '*.jpg;*.jpeg;*.gif;*.png',
        'multi': true,
        'auto': false
    });

but I want to store the Images in Database


@ Damith

I have tried in with the below mentioned code but it didn't worked,

   protected void Button1_Click(object sender, EventArgs e)
    {
        string FolderPath=@"E:\Rajesh_Kumar\Application\Valuation\ExamManagement\ExamManagement\Uploads";
        string path = System.Configuration.ConfigurationManager.AppSettings[FolderPath];
        string Qry = "insert into tblFiles values(@data) Values (data)";
        SqlConnection con = new SqlConnection(@"Data Source=ESLHPC17\SQL2008;Initial Catalog=dbFiles;User ID=rajesh";
        StreamReader sr = new StreamReader(path);
        while (sr.ReadLine() != null)
        {

                using (SqlCommand cmd = new SqlCommand(Qry, con))
                {
                    cmd.Parameters.Add("@data",SqlDbType.VarBinary).Value = path;
                    con.Open();
                    cmd.ExecuteNonQuery();
                }
            con.Close();
            con.Dispose();
        }

    }

Upvotes: 0

Views: 1552

Answers (2)

Damith
Damith

Reputation: 63065

try with

foreach (HttpPostedFile uploadedFile in FileUpload1.PostedFiles)
{
    SaveImage(uploadedFile);
}

private void SaveImage(HttpPostedFile file)
{
   using(SqlConnection con = new SqlConnection(ConnectionString))// set ConnectionString
   {
       using(SqlCommand cmd = new SqlCommand(Qry,con)) // set Qry
       {
          cmd.Parameters.AddWithValue("@data", ReadFile(file));
          con.Open();
          cmd.ExecuteNonQuery();
       }
   }
}

private byte[] ReadFile(HttpPostedFile file)
{
    byte[] data = new Byte[file.ContentLength];
    file.InputStream.Read(data, 0, file.ContentLength);
    return data;
}

If you need to insert images from server folder and assume you have array of image paths as imageArray then

foreach (var path in imageArray)
{
    SaveImage(path);
}

private void SaveImage(string path)
{
   using(SqlConnection con = new SqlConnection(ConnectionString))// set ConnectionString
   {
       using(SqlCommand cmd = new SqlCommand(Qry,con)) // set Qry
       {
          cmd.Parameters.AddWithValue("@data", System.IO.File.ReadAllBytes(path));
          con.Open();
          cmd.ExecuteNonQuery();
       }
   }
}

Upvotes: 2

LukeHennerley
LukeHennerley

Reputation: 6434

foreach(HttpPostedFile file in FileUpload1.PostedFiles)
{
  var memoryStream = new MemoryStream();
  file.InputStream.CopyTo(memoryStream);
  string Qry = "insert into tblFiles values(@data)";
        SqlConnection con = new SqlConnection(@"Data Source=ESLHPC17\SQL2008;Initial Catalog=dbFiles;User ID=user;Password=password");

        SqlCommand cmd = new SqlCommand(Qry,con);
        cmd.Parameters.Add("@data") = memoryStream.ToArray();

}

Upvotes: 1

Related Questions