Foros del Web » Programando para Internet » PHP »

Subir archivos a tablas SQL Server 2000 con php

Estas en el tema de Subir archivos a tablas SQL Server 2000 con php en el foro de PHP en Foros del Web. Hola a todo/as. Estoy intentando subir archivos de tipo .exe, .jpg o .pdf a un servidor de Sql Server 2000, pero algo se me escapa ...
  #1 (permalink)  
Antiguo 31/08/2004, 08:45
 
Fecha de Ingreso: abril-2002
Mensajes: 6
Antigüedad: 15 años, 8 meses
Puntos: 0
Subir archivos a tablas SQL Server 2000 con php

Hola a todo/as.

Estoy intentando subir archivos de tipo .exe, .jpg o .pdf a un servidor de Sql Server 2000, pero algo se me escapa y no consigo hacerlo .

Tengo una tabla con un campo de tipo binario donde intento almacenar archivos, ya he probado de varios tipos pero siempre obtengo el mismo resultado:

Una secuencia de errores del tipo Warning: mssql_query() [function.mssql-query]: message: Line 3: Incorrect syntax near '6'. (severity 15) ...
El error es justo en el momento de hacer el insert.

Este es el código de la página del formulario:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="guarda.php" method="post" enctype="multipart/form-data" name="frmUploadFile">
<p>
<input name="archivo" type="file" id="archivo">
</p>
<p>
<input name="descripcion" type="text" id="descripcion">
</p>
<p>
<input type="submit" name="Submit" value="Guardar">
</p>
</form>
</body>
</html>

Y este es el código del script php para insertar el registro. Está sin depurar, de momento me conformoaría con que insertara el dichoso registro

<?
/*creamos la conexion*/
require "logindb.php"; // Login a las bases de datos (funciona).


if (!$_FILES["archivo"]["tmp_name"]) //si no subio nada, vuelve a la pagina de subida
{
header("location: subida.htm");
}
else //si subio algo, se procede con el almacenamiento
{
$nombre=$_FILES["archivo"]["name"];
$tamanio = $_FILES["archivo"]["size"];
$temp=$_FILES["archivo"]["tmp_name"];
$tipo=$_FILES["archivo"]["type"];
$descripcion=$_POST["descripcion"];

$puntero=fopen($temp, "rb");
$contenido=fread($puntero, $tamanio);
$contenido=addslashes($contenido);
fclose($puntero);
// $contenido2 = convert(binary. $contenido);--> he probado esto, pero tampoco.

// echo $sentencia;

mssql_query("insert into CalidadDocumentos(Titulo, Descripcion, Contenido, Tipo) values ('$nombre', '$descripcion', '$contenido', '$tipo')", $ID_conexion);

}
?>

Si alguien puede ayudarme lo agradeceré infinito.

Marcos
  #2 (permalink)  
Antiguo 31/08/2004, 12:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues el error es de SQL .. no de PHP ... Realmente no sé como trabaja los campos binarios MS SQL Server. La técnica de añadir "slashess" (\) para "escapar" ciertos caracteres (Hexadecimales) que contiene un archivo binario al leerlo (vía ese fopen()) . .con el objetivo de llevarlo hacia un variable (cadena, string) .. es la que usa Mysql ..

Deberías hacer un "echo" a $contenido y ver que es lo que contiene (valga la redundancia) .. y de ahí ver si eso es una sintax SQL correcta (por qué parece que no lo es para MS SQL Server ..)

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 18:28.