Foros del Web » Programando para Internet » PHP »

subida de *.pdf al servidor

Estas en el tema de subida de *.pdf al servidor en el foro de PHP en Foros del Web. buenas a todo el mundo. llevo un tiempo utilizando esta pagina para consultar dudas, pero esta es la primera vez que posteo en el foro, ...
  #1 (permalink)  
Antiguo 20/11/2006, 04:48
 
Fecha de Ingreso: noviembre-2006
Mensajes: 1
Antigüedad: 17 años, 5 meses
Puntos: 0
subida de *.pdf al servidor

buenas a todo el mundo.
llevo un tiempo utilizando esta pagina para consultar dudas, pero esta es la primera vez que posteo en el foro, porque llevo una semana atascado y necesito ayuda desesperadamente antes de morir indigestado por comerme el teclado

el problema es el siguiente(por fin pensareis):

he programado un script en php. el script se llama subir_pdf.php y es el encargado de pedir datos a traves de un formulario que llama a la misma pagina (con un campo hidden para verificar) y que cuando una variable tiene un cierto valor "x", inserta los datos que le han pasado ($_POST[' ']) y si no tiene ese valor muestra el formulario de insercion de datos de nuevo...
vale,hasta aqui todo muy sencillito y mono. el codigo (revisado tropecientos millones de veces) me parece que esta bien. ete aqui que lo cuelo y la funcion "move_uploaded_file" me da un error...y yo despues de comerme el tarro pienso...claro, he dejado como limite maximo para los archivos pdf 10 Mg y el apache por defecto creo que tiene 4 Mg maximo de tamaño de archivo subido...asi que pruebo con un archivo mas pequeñito...700 Kbs... y me sigue dando el mismo error y cuando uno imprime el error que te puede dar la funcion en cuestion (move_uploaded_file), hay cuatro respuestas predefinidas...una de ellas es que el tamaño excede al permitido en el servidor...y las otras tres no me aclaran nada...no se me ocurre nada mas asi que directamente os pego el codigo aqui (espero saber hacerlo...):
(la url que aparece en el include, no la puedo poner porque no me deja...dice que tengo que publicar 30 mensajes antes de poder poner una url a otras webs pero esta bien (recomprobado)...por cierto, vaya chorrada por favor poner un impedimento como ese...)

Código PHP:
include "htt://ww.lapaginaencuestion/unacarpetacualquiera/unarchivocualquiera";
conecta1($c);

function 
sube($nombre_tabla,$tipo_archivo,$tamano_archivo,$nom_temp,$nombre_real)
{
    if ( (
strcmp($tipo_archivo"application/pdf")!=0) || ($tamano_archivo 10485760)) {
        echo 
"<p><div align='center'>La extensi&oacute;n o el tama&ntilde;o de los archivos no es correcta. <br><br>Se permiten archivos *.pdf<br>Se permiten archivos de 10 MB como m&aacute;ximo</p>";
        
$aux=strcmp($tipo_archivo"application/pdf");
        echo 
"<p>".$aux."</p>";
    }else{
        
$nombre_archivo="/".$nombre_tabla."/".$nombre_real;
        
$aux=strcmp($tipo_archivo"application/pdf");
        echo 
"<p>nombre archivo: ".$nombre_archivo."<br>comparacion de cadenas: ".$aux."<br>nombre temporal: ".$nom_temp."<br>nombre archivo: ".$nombre_archivo."</p>";
        if (
move_uploaded_file($nom_temp$nombre_archivo)){
           echo 
"<div align='center'>El archivo ha sido cargado correctamente.</div>";
           return 
$nombre_archivo;
        }else{
           echo 
"<div align='center'><font color=\"red\">Ocurri&oacute; alg&uacute;n error al subir el fichero. No pudo guardarse.</font></div>";
        }
    }
}
if (
$_POST['aux']!=1)

Código HTML:
<p><form name="texto" action="subir_pdf.php" method="post"  enctype="multipart/form-data">
		<table border="0" align="center">
		<input type="hidden" name="aux" value="1">
		<tr><td>T&iacute;tulo *.pdf</td><td><input type="text" name="titulo"></td></tr>
		<tr><td>Archivo *.pdf</td><td><input type="file" name="archivo"></td></tr>
		<tr><td>Categoria</td><td><select name="categoria">
			<option value="Mariemma">Mariemma</option>
			<option value="Reconocimiento">Reconocimiento</option>
			<option value="Museo">Museo</option>
			<option value="Difusion">Difusi&oacute;n</option>
			<option value="Formacion">Formaci&oacute;n</option>
			<option value="Prensa">Notas de Prensa</option>
			<option value="Otros">Otros</option>
		</select></td></tr>
		</table><br><div align="center"><input type="submit" value="Enviar"></div>
	</form></p> 
Código PHP:
}
else
{

    echo 
"<table border='0' align='center'>";
    echo 
"    <tr><td>hidden:</td><td>".$_POST['aux']."</td></tr>";
    echo 
"    <tr><td>t&iacute;tulo:</td><td>".$_POST['titulo']."</td></tr>";
    echo 
"    <tr><td>nombre temporal:</td><td>".$_FILES['archivo']['tmp_name']."</td></tr>";
    echo 
"    <tr><td>nombre archivo:</td><td>".$_FILES['archivo']['name']."</td></tr>";
    echo 
"    <tr><td>tama&ntilde;o m&aacute;ximo:</td><td>10485760</td></tr>";
    echo 
"    <tr><td>tama&ntilde;o:</td><td>".$_FILES['archivo']['size']."</td></tr>";
    echo 
"    <tr><td>tipo archivo:</td><td>".$_FILES['archivo']['type']."</td></tr>";
    echo 
"    <tr><td>categoria:</td><td>".$_POST['categoria']."</td></tr>";
    echo 
"</table>";
    
$var=sube(textos,$_FILES['archivo']['type'],$_FILES['archivo']['size'],$_FILES['archivo']['tmp_name'],$_FILES['archivo']['name']);
    if(
$var=='')
        echo 
"<div align='center'>Ha habido un error probablemente subiendo el archivo</div>";
    else
    {    
        
$cons="insert into textos values('$var','".$_POST["titulo"]."','".$_POST["categoria"]."')";
        if (!
mysql_query($cons,$c)) 
            echo 
"<br>No se pudo insertar el registro en la base de datos, revise la longitud de los campos";
        else
            echo 
"<br>El archivo ha sido cargado correctamente";
    }

y creo que eso es todo...si alguien pudiera ayudarme me haceis padre...y estoy seguro de que tiene que ser una tonteria..pero es que soy incapaz de verlo...por cierto, la conexion a la base de datos para la insercion de los campos la hago en una funcion que esta en un archivo externo en el servidor...y desgraciadamente el script no ha llegado todavia a esa parte asi que no da error por ahi (en la insercion en la tabla de los campos) y por eso no pego el codigo de ese otro script...

gracias por adelantado
un saludo desesperado a todo el que lea este post
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:06.