Cómo cargar archivos en SQL Server con ASP.NET usando C#

El siguiente ejemplo muestra las líneas necesarias para cargar un archivo en una base de datos, el ejemplo se basará en usar SQL Server, así que los pasos son:

1.- Antes de comenzar con la creación del código es necesario crear la base de datos, creamos una tabla, le llamaré “tblArchivos

2.- Las columnas que contendrá la tabla “tblArchivos” serán:

Imagen

Recuerden que esta tabla solo nos servirá de ejemplo para realizar el cargado de los archivos, así como para conocer que tipo de archivo se está cargando, es probable que para un ejercicio real esta tabla se complemente.

Los siguientes pasos muestran lo necesario en cuanto a controles y lineas de código para hacer la transferencia del archivo al servidor.

3.- Una vez creado el proyecto de tipo Web Aplication, agregar un WebForm.

4.- Dentro de la página añadir un control de tipo “FileUpload” y un control de tipo “Button“, el primero nos servirá para seleccionar el archivo que queremos cargar, el segundo nos servirá para invocar el envío de datos al servidor.

5.- Al control de tipo FileUpload le llamaremos “archivoSeleccionado”, al botón pueden darle el nombre que mejor les parezca.

6.- Invocar el método onClick del botón, ahí colocaremos el siguiente código.

//Con esta condición nos aseguramos de dos cosas, primero que el se haya realizado la carga o la transferencia de un archivo ya que con PostedFile se recupera la información relacionada al archivo (tamaño, tipo, contenido, etc.) y en segundo lugar que el arreglo contenga al menos un archivo cargado.
if ((archivoSeleccionado.PostedFile != null) &&
(archivoSeleccionado.PostedFile.ContentLength > 0))  
{

//Con la clase HttpPostedFile se obtiene acceso de forma individual a los archivos cargados
HttpPostedFile imgFile = archivoSeleccionado.PostedFile;

//Creamos byteFile que contendrá todo el contenido del archivo
Byte[] byteFile = new Byte[archivoSeleccionado.PostedFile.ContentLength];

//Se lee el contenido del archivo en la variable creada byteFile
imgFile.InputStream.Read(byteFile, 0, archivoSeleccionado.PostedFile.ContentLength); 

//Se crea la sentencia SQL que insertará los datos en la tabla de la BD
string sql = “insert into tblArchivos (Image, Tipo) values (@Archivo, @Tipo)”;

//Se crea el recurso de conexión a la BD, la cadena de conexión varia de acuerdo a los parámetros establecidos por su conexión al gestor, usuario, contraseña y método de conexión.
SqlConnection conn = new SqlConnection(“String de conexión al gestor y a la BD.”);

//Se crea el recurso de Command que permitirá ejecutar la instrucción SQL.
SqlCommand cmd = new SqlCommand(sql, conn);

cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(“@Archivo”, System.Data.SqlDbType.Image);
cmd.Parameters.Add(“@Tipo”, System.Data.SqlDbType.VarChar, 50);
cmd.Parameters[“@Archivo”].Value = byteFile;
cmd.Parameters[“@Tipo”].Value = archivoSeleccionado.PostedFile.ContentType;

//se abre la conexión al gestor de BD y se hace la ejecución de la sentencia
conn.Open();

cmd.ExecuteNonQuery();
conn.Close();

}

De esta manera el código anterior permite a partir de una página web seleccionar un archivo y cargarlo en una BD.

El límite de tamaño de un archivo está restringido a 4096 KB es decir 4MB, si queremos permitir la carga de archivos de mayor se debe especificar en el archivo de configuración Web.Config, de igual manera si se quiere restringir a un tamaño menor, en el ejemplo siguiente se permite el tamaño hasta 8MB.

<httpRuntime targetFramework=”4.5″ executionTimeout=”90″ maxRequestLength=”8192″ />

Otros valores para maxRequestLength son: 16384 para 16 Mb, 65536 para 64 Mb, y así sucesivamente.

Saludos

One thought on “Cómo cargar archivos en SQL Server con ASP.NET usando C#

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Límite de tiempo se agote. Por favor, recargar el CAPTCHA por favor.