Foros del Web » Programando para Internet » PHP »

Ruta upload en servidor

Estas en el tema de Ruta upload en servidor en el foro de PHP en Foros del Web. Hola tengo un script hecho para subir archivos al server, solo lo he probado localmente y si copiaba donde tenia que copiar el archivo, y ...
  #1 (permalink)  
Antiguo 24/12/2006, 10:24
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Ruta upload en servidor

Hola tengo un script hecho para subir archivos al server, solo lo he probado localmente y si copiaba donde tenia que copiar el archivo, y ahora me surge la duda de que ruta tengo que poner para que lo surva al servidor, el host y luego / y la carpeta donde quiero que me lo copie o como va?
os pongo el script con la ruta puesta del AppServ de mi pc para que os hagais una idea de lo que quiero saber, Gracias y Feliz Navidad..

Código PHP:
<? 
//tomo el valor de un elemento de tipo texto del formulario 
$cadenatexto $_POST["cadenatexto"]; 
echo 
"<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #000000; font-weight: bold;'  >Comentario:   $cadenatexto </p>"

//datos del arhivo 
$nombre_archivo $HTTP_POST_FILES['userfile']['name']; 
$tipo_archivo $HTTP_POST_FILES['userfile']['type']; 
$tamano_archivo $HTTP_POST_FILES['userfile']['size']; 
//compruebo si las características del archivo son las que deseo 
if (!((strpos($tipo_archivo"pdf") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 999999))) { 
    echo 
"<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #000000; font-weight: bold;'> La extensión o el tamaño de los archivos no es correcta. </p>";
    echo 
"<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #000000; font-weight: bold;'> Solo admite archivos con extension .pdf o .jpg  </p>";
    echo 
"<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #000000; font-weight: bold;'> Solo admite archivos con un tamaño máximo de 999kb </p>";
    
}else{ 
    if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"C:/AppServ/www/Nogues/Upload/$nombre_archivo")) { 
       echo 
"<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #000000; font-weight: bold;'> El archivo $nombre_archivo ha sido cargado correctamente</p>";
   
    }else{ 
       echo 
"<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #000000; font-weight: bold;'> Ocurrió algún problema al subir el fichero  </p>";
    } 


?>
  #2 (permalink)  
Antiguo 24/12/2006, 10:45
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Ruta upload en servidor

No es necesario que uses una ruta absoluta, podés tranquilamente usar una ruta relativa.
Por otro lado, tenés en $_SERVER['DOCUMENT_ROOT'] la ruta absoluta a la raíz de tu sitio, de ahí podés completar la ruta con la carpeta que quieras.


Saludos.
  #3 (permalink)  
Antiguo 24/12/2006, 10:55
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Ruta upload en servidor

Reholas Avlin supongo que te acordaras de mi...el de las sesiones y 50 post jeje...Bien, no se si he entendido bien te refieres que dentro de esa variable tengo la ruta especifica, es lo que necesito saber para ponerlo en esta línea igual que cuando lo subia localmente...
Código PHP:
(move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"C:/AppServ/www/Nogues/Upload/$nombre_archivo")) 
  #4 (permalink)  
Antiguo 24/12/2006, 23:01
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Ruta upload en servidor

Cita:
Iniciado por Javiglez Ver Mensaje
Reholas Avlin supongo que te acordaras de mi...el de las sesiones y 50 post jeje...
Nooooooo no me había fijado
Jajaja dónde me vine a meter
Código PHP:
(move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"C:/AppServ/www/Nogues/Upload/$nombre_archivo")) 
Antes que nada tenés que tener claro que "la raíz" son diferentes cosas para el servidor web y para el navegador.
/ para el navegador es la carpeta superior de tu sitio
/ para el servidor es la carpeta raíz del sistema

Ahora, suponiendo que tu sitio esté en la carpeta "C:/AppServ/www/Nogues", entonces

$_SERVER['DOCUMENT_ROOT']

tendrá el valor (se asignará automáticamente)

'C:/AppServ/www/Nogues'


Por lo tanto, bien podrías hacer:

$archivo_destino = $_SERVER['DOCUMENT_ROOT'].'/Upload/'.$nombre_archivo;


¿se entiende?


Saludos.... espero que no de para otros 50 mensajes
  #5 (permalink)  
Antiguo 25/12/2006, 02:04
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: Ruta upload en servidor

eh, un consejo, usa los mime types, no te confies de las extenciones de los archivos, en las faqs encontraras mucha ayuda, saludos.!
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #6 (permalink)  
Antiguo 25/12/2006, 03:51
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Ruta upload en servidor

Bien maestro venerado avlin, creo que si lo entiendo o eso creo, por lo que te he entendido $_SERVER['DOCUMENT_ROOT'] ahi esta el directorio raiz del servidor y como bien me has puesto tengo creada una carpeta de UPLOAD porque he querido hacerlo igual que localmente pues bien lo he puesto como me has dicho...
Código PHP:
(move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"$_SERVER['DOCUMENT_ROOT'].'/Upload/'.$nombre_archivo")) 
Pero me da este error que yo creo que es de sintaxis y que esta pidiendo algo mas...o un espacio en blanco o algo...

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /web/sites/user/6/72/54406/public/www/admin/subir.php on line 52

Un saludo avlin, como me iva a salir a la primera y por cierto FELIZ NAVIDAD!!! a todos.
  #7 (permalink)  
Antiguo 25/12/2006, 12:59
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Ruta upload en servidor

Estás mezclando comillas, no es necesario que incluyas siempre las comillas dobles. Si la variable es una cadena, basta con escribir su nombre...

De la forma que lo escribí yo, funciona.
$_SERVER['DOCUMENT_ROOT'].'/Upload/'.$nombre_archivo

Si querés usar las comillas dobles y que la variable se expanda dentro de las comillas, la forma sería:

"$_SERVER[DOCUMENT_ROOT]/Upload/$nombre_archivo"

¿notás la falta de las comillas alrededor de DOCUMENT_ROOT?
Ambas formas son válidas, pero tengo entendido que la forma con las comillas simples (la que puse primero) se procesa más rápido.

Creo que hace falta aclarar que si una función necesita una cadena como parámetro, y la cadena la guardamos como:

$variable = 'Hola, mundo';

no es necesario hacer

funcion("$variable");

sino que basta con

funcion($variable);

Capaz que ya lo sabías, pero por las dudas


Y vevni, es cierto, es mejor confiar en los tipos mime.
Pero no es el servidor el que da la información, sino que ese dato se obtiene de lo que envía el navegador... por lo que tampoco es tan 'confiable'....

Lo ideal sería usar una función (o comando del sistema) capaz de analizar el archivo y devolver su tipo.

En fin, saludos
  #8 (permalink)  
Antiguo 25/12/2006, 15:09
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: Ruta upload en servidor

Código PHP:
(move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"$_SERVER['DOCUMENT_ROOT'].'/Upload/'.$nombre_archivo")) 
eso quedaria como (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],$_SERVER['DOCUMENT_ROOT'].'/Upload/'.$nombre_archivo))

= y como lo dice alvlin esta bien

= y como lo dice
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #9 (permalink)  
Antiguo 25/12/2006, 15:29
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Ruta upload en servidor

Muchas gracias a ambos, viendo los fallos que me da parece que si que coge bien la ruta pero surge algun problema mas inesperado, pero la ruta si parece que la ha cogido, a ver si sabeis de que puede ser..

Warning: move_uploaded_file(/web/sites/user/6/72/54406/public/www/Upload/honda.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /web/sites/user/6/72/54406/public/www/admin/subir.php on line 52

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/tmp/phpvzhzoY' to '/web/sites/user/6/72/54406/public/www/Upload/honda.jpg' in /web/sites/user/6/72/54406/public/www/admin/subir.php on line 52
  #10 (permalink)  
Antiguo 26/12/2006, 12:14
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Ruta upload en servidor

no consigo quitar esos warnings y subir esos archivos, he probado de las dos formas y nada...
  #11 (permalink)  
Antiguo 26/12/2006, 12:16
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Ruta upload en servidor

¿la carpeta Upload tiene los permisos correctos?
probá desde un cliente ftp (o desde php quizás con chmod) cambiarle los permisos a 777, o 'ejecución, lectura y escritura para dueño, grupo y otros'


Saludos.
  #12 (permalink)  
Antiguo 26/12/2006, 12:45
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Ruta upload en servidor

nada avlin tiene todos los permisos y me sigue dando esos fallos...ya empezamos...
  #13 (permalink)  
Antiguo 27/12/2006, 07:45
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Ruta upload en servidor

Esto no pinta bien jeje, estoy abierto a nuevas ideas para poder subir archivos al servidor.....Sigue sin funcionarme no es problema de los permisos de carpeta porque he dado todos...
  #14 (permalink)  
Antiguo 27/12/2006, 11:44
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Ruta upload en servidor

Pues el archivo se está copiando en el servidor, eso lo indica el segundo error.

Lo único que se me ocurre es que no estés tomando las rutas correctas de las carpetas (por ejemplo, que sea admin/Upload en vez de Upload). Revisá bien eso...

No se me ocurre mucho más...
  #15 (permalink)  
Antiguo 27/12/2006, 14:42
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Ruta upload en servidor

ya tira avlin y vevni...muchas gracias denuevo se me habia pasado la tipica minuscula....ya ves que tontería....otra cosilla que te queria comentar y que al probarlo me da problemas tambien con esa ruta y es un problema de que lo pongo mal para que me digas como es...Ese archivo luego le quiero borrar y para eso tengo esto...
Código PHP:
<?  
$dir
=$_SERVER['DOCUMENT_ROOT'].'/UPLOAD/';
$nombre=$HTTP_POST_VARS["nombre"];
            
unlink($dir."/".$nombre);
//borra el registro del archiv de la base de datos
mysql_query("delete from Documentos where nombre='".$nombre."'");  
header("Location: listado_archivos.php");  
?>
pero por lo que veo guardo mal en $dir lo que me comentaste antes para subirlo y no se com ponerlo....MIL GRACIAS!!!

Última edición por Javiglez; 27/12/2006 a las 15:00
  #16 (permalink)  
Antiguo 27/12/2006, 15:24
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Ruta upload en servidor

Hay que recordar que UPLOAD no es lo mismo que Upload en Unix (o en Linux), y por lo tanto tenés el problema ahí.... Por otro lado, quizás no te de problemas, pero tal y como estás armando el nombre de archivo a borrar, te sobraría un /

$dir."/".$nombre == $_SERVER['DOCUMENT_ROOT'].'/UPLOAD//$HTTP_POST_VARS["nombre"]

aunque por lo que leo en tu mensaje ya lo solucionaste.... ¿o no?


Saludos.
  #17 (permalink)  
Antiguo 27/12/2006, 15:51
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Ruta upload en servidor

si ya lo esta borrando con algun que otro warning pero borrando muchas gracias avlin una vez mas!!!
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 21:30.