Foros del Web » Programando para Internet » PHP »

sere tonto, Ayudaaaaaa ??? (upload)

Estas en el tema de sere tonto, Ayudaaaaaa ??? (upload) en el foro de PHP en Foros del Web. amigos es lo unico que me queda por creer ja, a menos que ni lycos ni miarroba acepten upload desde http o que los vinos ...
  #1 (permalink)  
Antiguo 02/08/2003, 18:02
Avatar de RJ
RJ
 
Fecha de Ingreso: abril-2002
Mensajes: 54
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta sere tonto, Ayudaaaaaa ??? (upload)

amigos es lo unico que me queda por creer ja, a menos que ni lycos ni miarroba acepten upload desde http o que los vinos de anoche me tengan mareao.
Porque no es tan simple como un formulario con un files y un archivo php que haga un copy al servidor ?. Algo asi

<?
echo'<form method="POST" enctype="multipart/form-data" action="miupl.php">
<input type="file" name="archivo" size="20">
<input type="submit" value="Enviar" name="send">
<input type="reset" value="Borrar" name="erase">
</form>'
?>

<?
$extensiones=array("html","php");
$path=$_SERVER['DOCUMENT_ROOT']."uploads";
$nombre=$HTTP_POST_FILES['archivo']['name'];
$tamanio=$HTTP_POST_FILES['archivo']['size'];
$tipo=$HTTP_POST_FILES['archivo']['type'];
$var = explode(".","$nombre");
$num = count($extensiones);
$valor = $num-1;
for($i=0; $i<=$valor; $i++) {
if($extensiones[$i] == $var[1]) {
echo "Tipo de Archivo no admitido";
exit;
}
}
if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])){
copy($HTTP_POST_FILES['archivo']['tmp_name'], "$path/nombre");
echo "El archivo se ha subido correctamente al servidor"";
}
else {
echo "Error al subir el archivo, demasiado grande, tamaño maximo 1,4 megas."; }
?>


Solo hay agregados unos controles de extensiones pero me sale por "Error al subir el archivo, demasiado grande, tamaño maximo 1,4 megas." que dicho sea de paso es un control medio fulero porque puede saltar por otras cosas como es mi caso. Ayuda por favor
__________________
RJ
  #2 (permalink)  
Antiguo 02/08/2003, 18:08
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
el servidor donde quiere hacerlo es myarroba.com o algo asi... es gratuito
__________________
3w.valenciadjs.com
3w.laislatv.com
  #3 (permalink)  
Antiguo 02/08/2003, 20:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, .. así de simple es el "script" para hacer "uploads" .. Pero que funcione o no depende de la configuración de tu "PHP" que uses (el de Lycos o miarroba en tu caso)

Que yo sepa en Lycos no funcionan los Uploads y en miarroba supongo que tampoco (y en general en servicios gratuitos de hosting).

A veces el "Safe Mode" (a ON) tiene la culpa (pues restringe funciones y por "donde" puedes moverte en tu servidor ..)

Otra veces es el "open_base_dir" (directiva del php.ini que lo puedes ver también en un phpinfo() ..) .. En estos casos esa directiva apunta a tu própio "path" asignado en ese servidor .. por ende no puedes "salir" con tu copy() (o incluso un move_uploaded_file() fuera de tu directorio asignado).

(Cuando haces el "copy()" estás copiando un archivo que cae normalmente en /tmp (en sistemas Linux) o donde indique la directiva: upload_tmp_dir ... hacia un directorio de tu servidor virtual asignado en ese servidor ..)

O .. simplemente:
file_uploads .. lo tienen a OFF ..
upload_max_filesize .. lo tienen a 0 ...

Como veras .. hay un buen número de directivas de configuración que intervienen en este tema. Si conoces lo que significan y puedes hace un phpinfo() a tus servicios de hosting que uses .. ahí verás porqué no funciona el "upload" ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 02/08/2003, 22:28
Avatar de RJ
RJ
 
Fecha de Ingreso: abril-2002
Mensajes: 54
Antigüedad: 15 años, 8 meses
Puntos: 0
no parece haber problemas de configuracion

Gracias cluster por responder, no parece haber problemas de configuracion, mira te paso el phpinfo() actual de mi arroba donde esta "corriendo" el script y veo que permite upload

Ver confiruracion

No tengo problemas en mi Apache, porque para sacarme las dudas siempre pruebo tanto offline como online y me da el mismo error. Tengo PHP 4.2.3
Yo me pregunto donde estara el tonto error, sigo probando ...
__________________
RJ
  #5 (permalink)  
Antiguo 02/08/2003, 22:30
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
jejeje, Cluster, y si usamos el FTP, podremos...?, supongo que no, porque el formulario se hace desde el server... o me equivoco.... ;)

su configuracion php es esta....

http://grupocba.webcindario.com/pru.php

que raro... parece correcta.... no?
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 02/08/2003 a las 22:34
  #6 (permalink)  
Antiguo 02/08/2003, 23:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
nuevo ..

Cita:
supongo que no, porque el formulario se hace desde el server... o me equivoco.... ;)
No entendí eso .. (ahora creo que lo entendí ... ) ..

Sea como sea .. Si tienes un archivo en el "cliente" (en tu pc) y quieres subirlo al servidor (por PHP) .. En algún momento usando PHP vas a tener que hacer el UPLOAD vía HTTP por el formulario típico (como el del ejemplo que pusieron) .. Una vez el archivo en el directorio donde PHP los deja .. de ahí a su destino definitivo puede ser un simple "copy()" si estamos en el mismo servidor o por FTP funciones si a otro servidor FTP o por el servidor FTP del mismo sitio hacia un directorio nuesto (esto no tendría mucho sentido sirviendo un simple copy() ..a no ser que tengas que controlar temas de "quotas" o usuarios .. tema que lo gestiona ya el servidor FTP que usemos ..)


RJ:

Fijate
safe_mode ON

open_basedir = /home/webcindario/grupocba

Y ..

upload_tmp_dir = /tmp/

Si te fijas en lo que te comenté antes .. Así .. con esa configuración nunca vas ha poder hacer Upload vía HTTP .. puesto que PHP deja los archivos que suben por HTTP (tu formulario con tu campo <file> ) en ese directorio (/tmp/) y tu open_base_dir directiva te restringe a tu Path absoluto de tu servidor virtual asignado ...

Así que si haces algún copy() o move_upload_file() .. o similar desde el /tmp/ verás que te saltará PHP con algún error acerca de permisos ...

pd: move_uploaded_file() "en teoría" debería dejarte copiar un archivo subido por HTTP .. pero, parece que no es así (en los comentarios de los usuarios de php.net así lo comentan .. ) De todas formas usa preferentemente move_uploaded_file() en lugar de copy() para este tipo de "movimiento" de archivos recien subidor por HTTP.

-------

Lo que es por FTP .. menos todavía .. Se requiere de la directiva de compilación:

enable-ftp

Y ahí no se vé por ningun sitio (debería salir en el bloque "Configure Command")

Así que . no le des más vueltas a servicios de hosting gratuitos y no pienses en errores "tontos" .. Informate en php.net de las funciones que uses y lee que parámetros o especificaciones requieren para que funcionen ...

Y .. sobre todo piensa que "nada en esta vida es gratis" .. o ¿ creias que servicios de hosting gratuito te ivan a dar todo PHP a "full" con Mysql "a full" (sin ninguna restricción) sólo a cambio de un "bannercito" ..?¿

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 03/08/2003 a las 00:47
  #7 (permalink)  
Antiguo 03/08/2003, 10:18
Avatar de RJ
RJ
 
Fecha de Ingreso: abril-2002
Mensajes: 54
Antigüedad: 15 años, 8 meses
Puntos: 0
Gran descubrimiento tal como decia Cluster si pongo copy da error, hay que usar move, y tambien tengo que crear el tmp dentro de mi home. Usando esos cambios si bien no funciono me copio algo al tmp de mi home pero no lo puedo ver y por ende no puede completar el upload. Se que me copio algo porque ahora no puedo borrar esa carpeta !!!! me dice que no esta vacia. Alguna idea para terminar el upload sacando esos tmp de la carpeta ????
__________________
RJ
  #8 (permalink)  
Antiguo 03/08/2003, 13:13
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
creo entender que da igual como lo hagas,porque no va a dejar, ya que es un sitio gratuito,... da igual por html que por ftp, porq
siempre usamos el formulario por HTML para subirlos... osea na de na... gracias Cluster, hoy me acuesto sabiendo una cosa mas.
__________________
3w.valenciadjs.com
3w.laislatv.com
  #9 (permalink)  
Antiguo 03/08/2003, 14:23
 
Fecha de Ingreso: julio-2003
Ubicación: Mexico
Mensajes: 12
Antigüedad: 14 años, 5 meses
Puntos: 0
Pues yo estoy alojado en Lycos.es y me ha funcionado bien he usado este script para mis uploads

<? if(isset($HTTP_POST_VARS['LIMIT'])):?>
<?
define ("b","<br>");
$archivo_name= $HTTP_POST_FILES['FILE']['name'];
$archivo_size= $HTTP_POST_FILES['FILE']['size'];
$archivo_type= $HTTP_POST_FILES['FILE']['type'];
$archivo= $HTTP_POST_FILES['FILE']['tmp_name'];
$limtamano = $HTTP_POST_VARS['LIMIT'];
if($archivo != "none" AND $archivo_size != 0 AND $archivo_size<=$limtamano)
{if(move_uploaded_file($archivo,"./uploads/".$archivo_name))
{echo "Transferencia de Archivo: $archivo_name completada con Exito".b;
echo $archivo_name.b;
echo $archivo_size.b;
echo $archivo_type.b;
echo $archivo.b;
echo $limtamano.b;}}
else
{echo '<strong><font color="#FF0000" size="4" face="Verdana, Arial, Helvetica, sans-serif">Hubo un Error en la Transferencia de:</font></strong>'.$archivo_name;
echo '<strong><font color="#FF0000" size="4" face="Verdana, Arial, Helvetica, sans-serif"><br>El tamaño del fichero es</font></strong>'.$archivo_size;
}

?>

<? else: ?>
<form action="<? $HTTP_SERVER_VARS['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="LIMIT" value="51200">
<input name="FILE" type="file">
<input name="" type="submit" value="Submit">
</form>
<? endif; ?>


http://usuarios.lycos.es/zamy57/submit.php
esta es la direccion si quieren probar si no les funciona a la primera intenten de nuevo por lo menos a mi no me funciona hasta que lo pruevo por segunda ves si kieren ver el archivo que han subido http://usuarios.lycos.es/zamy57/uploads/
he limitado el tamaño de carga a 50k para que no me saturen el servidor el script estara ahi por una semana apartir de hoy para los que kieran ver como trabaja espero les sea de utilidad en miarroba... no he probado pero la verdad no me gusta mucho miarroba el ftp se pone muy roñoso cuando subes ficheros grrr
por cierto he probado con imagenes solamente tambien pienso por el error que dices que tal ves intentes subir un archivo mayor al tamaño que permite el server ahora no estoy seguro si el server soporte archivos binarios solo he probado con imagenes y archivos html.

Saludos.
nma2040
_________________
desarrollando para que el internet sea un mundo mejor :D

Última edición por nma2040; 03/08/2003 a las 14:32
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 13:03.