• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 279
  • Last Modified:

Storing Images in a filesystem and the location in the SQL database.

I was just wondering if there was a good code example out there in ASP.NET for me to get started on this. I googled it and I couldn't find a good one. I just found a bunch of articles stating that you SHOULD do it, but not HOW to do it.
0
GravitaZ24
Asked:
GravitaZ24
  • 7
  • 5
1 Solution
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
>Storing Images in a filesystem and the location in the SQL database.
actually, it would depend on the size of the files... large files -> file system. small files -> db is fine.
sql server 2008 -> has a "best of breed": FILESTREAM data type:
http://blogs.msdn.com/manisblog/archive/2007/10/21/filestream-data-type-sql-server-2008.aspx
or this one (free registration):
http://www.sqlservercentral.com/articles/SQL+Server+2008/64088/

and here some c# code with explanations:
http://blogs.msdn.com/zowens/archive/2008/03/03/sql-server-2008-filestream-and-wpf-mediaelement-part-2-writing-filestream-data.aspx

hope this helps
0
 
GravitaZ24Author Commented:
Most of the images i will be dealing with would be fairly large scans. Plus I'm not sure if the IT people are ready to upgrade to SQL server 2008 yet.
0
 
Bob LearnedCommented:
You would just need a VARCHAR column to store the full path to the file, and then process normal stored procedures for the CRUD stuff.
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
GravitaZ24Author Commented:
Thanks the learned one, is there any way you can point me in the direction of some example code, that is exactly what I want to do
0
 
Bob LearnedCommented:
Are you looking for a way, using ADO.NET, to achieve this, or using an SqlDataSource?  Choosing the direction that you would want to go in will help me find example code.
0
 
GravitaZ24Author Commented:
oh sorry, SQL Datasource, I have an area with where I want the user to upload forms that they will scan
0
 
Bob LearnedCommented:
For an SqlDataSource, I would think that something like this might help:

Using Parameters with the SqlDataSource Control
http://msdn.microsoft.com/en-us/library/z72eefad.aspx
0
 
GravitaZ24Author Commented:
I'm sorry, i'm kind of new to this, Maybe I am using ADO.NET and not realizing it. That is using the code behind right? Do you have an example using ADO.NET. I'm don't think that that previous link you showed would help me much.
0
 
Bob LearnedCommented:
That previous link is HTML that you use to configure an SqlDataSource.  If you are not using one of those, can you show me what you are using, so I can stop guessing?
0
 
GravitaZ24Author Commented:
Hi, Thanks for the response.
I got this so far, is there a way you can edit this to handle multiple images?

using System;
using System.IO;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.Services.Protocols;
 
public partial class _Default : System.Web.UI.Page
{
        
protected void Button1_Click(object sender, EventArgs e)
{
   int intResult = 0;
   FileUpload file1 = (FileUpload)FormView1.FindControl("FileUpload1");
   string strPath = ("c:\\Images\\" + Path.GetFileName(file1.PostedFile.FileName));
   SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=Prop_Change;Integrated Security=SSPI");
   SqlCommand com = new SqlCommand("Insert into PropChanges_AQMain(EN_OrigDocumentIMG) values(@EN_OrigDocumentIMG)", con);
   com.Parameters.Add("@EN_OrigDocumentIMG", strPath);
   con.Open();
   intResult = Convert.ToInt32(com.ExecuteNonQuery());
   if (intResult != 0) {
       file1.PostedFile.SaveAs(strPath);
       Response.Write("Record Inserted.");
 
}
 
    }
}

Open in new window

0
 
GravitaZ24Author Commented:
Or should I start a new question?
0
 
Bob LearnedCommented:
Ok, so you are using ADO.NET with an SqlCommand and an SqlConnection.   You can use those same classes to get the data from the SQL Server table.   All you would need to do is change the INSERT statement to a SELECT statement, and use SqlCommand.ExecuteDataReader, and use the SqlDataReader to load a DataTable.

Example:

Convert a DataReader to DataTable in ASP.NET
http://www.dotnetcurry.com/ShowArticle.aspx?ID=143&AspxAutoDetectCookieSupport=1
0
 
GravitaZ24Author Commented:
Thanks!
0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

  • 7
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now