Hola..... no se si me pueden ayudar con el siguiente problema:
No puedo hacer que se almacene en una base de datos un archivo cualquiera, para dejarme entender mejor les muestro segmentos del codigo que he realizado:
CODE: del formulario<form action="AReg_nuevo.php" method="post" enctype="multipart/form-data">
.............
........
<input name='userfile' type=file class="campo">
<textarea name="txtdesc" cols="30" rows="3" class="campo">Ninguna</textarea>
........
.........
</form>
CODE: de "AReg_nuevo.php"...........
........
if ( !empty ($userfile) )
{ $nombre = $_FILES["userfile"]["name"];
$extensiones = array("jpg","jpeg","gif","png","bmp","ico");
$var = explode(".","$nombre");
$num = count($extensiones);
$valor = $num-1;
$admitido = false;
for($i=0; $i<=$valor; $i++)
{ if($extensiones[$i] == $var[1])
{ $admitido=true;//es una extension valida
break;
}
}
if (!(empty($admitido))){
echo "<meta http-equiv=\"refresh\" content=\"2; URL=AReg_nuevo0.php?cod=$cod&miembro=$miembro\">
<span class='t_fecha'>No especificaste una imagen válida ( jpg, jpeg, gif, bmp, png, ico). Elija una imagen.</span> ";
exit();
}
$data = "";
$redir = "<meta http-equiv=\"refresh\" content=\"2; URL=AReg_nuevo0.php?cod=$cod&miembro=$miembro\">ERROR EN ALMACENAMIEMTO: INTENTE DE NUEVO";
//recoger algunos datos para almecenarlos
$userfile = $_FILES['userfile']['tmp_name'];
$tamano=$_FILES["userfile"]["size"];
if ($tamano==0){
print "El tamaño de la imagen es 0 <br>". $redir;
exit();
}
$tipo=$_FILES["userfile"]["type"];
$descripcion=$_REQUEST["txtdesc"];
//abrir el archivo y guardarlo en $fp= file pointer
$fp = fopen($userfile, "rb");
while(!feof($fp))
{
$data .= fread($fp, 1024);
}
fclose($fp);
$data = addslashes($data);
$data = addcslashes($data, "\0");
............
........
require '../db_connect.php';
$sql = "INSERT INTO `fotos` (Cod_Ing,Tamano_img,Nombre_img,Tipo_img,Imagen,Descripcion_img)
VALUES ('".$cod."','".$tamano."','".$nombre."','".$tipo."','".$data."','".$descripcion."')";
$res=mysql_query($sql)or die (print $redir. mysql_error());
$id=mysql_insert_id();
require '../db_dconnect.php';
........
............
print "<img src='printimage.php?id=". $id. "' border='0' class=foto>";
}
........
...........
//************************
Y bueno, el problema es que en "AReg_nuevo.php" el valor de $userfile es siempre nulo (lo que no sucede con las demás variables), aclaro de que estoy utilizando:
extract($_POST,EXTR_SKIP);
aunque he realizado pruebas tambien con:
$userfile = trim($_POST['userfile']);
Por último:
En lo segmentos que falta estoy utilizando otros componentes de formularios para leer datos personales como nombre, direccion, fono, etc.
Estos valores pasan normalmente a "AReg_nuevo.php" y se almacenan en una base de datos, pero no sucede lo mismo con el componente de tipo file.
NOTA: Funciona bien cuando trabajo en mi pc, pero no asi cuando lo subo a Internet.