Foros del Web » Programando para Internet » PHP »

Subir Archivos

Estas en el tema de Subir Archivos en el foro de PHP en Foros del Web. Para subir archivos .... es mejor utilizar el copy? o esta sentencia? is_uploaded_file($_FILES['userfile']['tmp_name'] si es mejor el uploaded.... como la uso? por que le di ...
  #1 (permalink)  
Antiguo 15/03/2004, 20:53
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Subir Archivos

Para subir archivos ....
es mejor utilizar el copy? o esta sentencia?
is_uploaded_file($_FILES['userfile']['tmp_name']

si es mejor el uploaded.... como la uso? por que le di vueltas y no logro subir nada. me dice como que lo sube, pero no pasa nada.

Podria alguien explicarme por que no sube??
Gracias

elwolos
  #2 (permalink)  
Antiguo 16/03/2004, 02:46
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
me parece que te confundes , puede ser copy o move_uploade_files, if_uploades_file() es para saber si realmente se ha subido el archivo..

En cuanto a la pregunta, para subir el archivo la sentencia seria asi
move_uploaded_file($_FILES['campo_file']['tmp_name'],$dir_htms."/images/" .$_FILES['campo_file']['name'])

donde $dir_htms, seria la ruta completa a la carpeta imges

espero que te sirva

saldudos
  #3 (permalink)  
Antiguo 16/03/2004, 06:06
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 13 años, 9 meses
Puntos: 0
Desacuerdo Gracias!!

AAAAAAAAAaaaaaaaaa!!!!!!!!! ahora si me cierra por que no subian los archivos?? tenes razon! estaba confundido de sentencia era move no if uploaded...

Gracias Jordi1!!! thank u!!!

elwolos
  #4 (permalink)  
Antiguo 16/03/2004, 06:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y .. para el caso concreto entre copy() (función genérica para copiar archivos) y move_uploaded_file() .. mejor usar esta última para el tema concreto de mover archivos que subieron por HTTP desde PHP. Esa función no dá problemas con "safe mode" (configuraciones) pues sólo mueve lo que se subió por ese método ... mientras que con copy() podrías mover cualquiera archivo de cualquier sito del servidor y .. justamente el "safe mode" entre otras directivas (open_base_dir .. etc) restringen esa "libertad" de movimiento de copy() (por seguridad).

También podrías haber usado para mover el archivo fopen() - fwrite() .. pero con los mismos problemas de permisos de lectura sobre el directorio temporal donde PHP sube los archivos que suben por HTTP (upload_tmp_dir ... php.ini )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 16/03/2004, 07:42
 
Fecha de Ingreso: diciembre-2003
Mensajes: 65
Antigüedad: 14 años
Puntos: 1
Igual puedes usr las funciones de FTP si no te permitiecen usar las demás funciones aunque aveces tambien falla todo depende si tu estas pagando tu servidor o es gratuito.

ESTAS SON LAS FUNCIONES DEL FTP:
ftp_connect();
ftp_login();
ftp_puts();

para más info en el manual de http://php.net
  #6 (permalink)  
Antiguo 16/03/2004, 07:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si estás en el mismo servidor que correo PHP y es ahí donde estás moviendo tus archivos ... Hacer ese "copy" con funciones de FTP supone realizar una conexión a ese servidor FTP (con el tiempo que ello conlleva) .. a su vez .. como antes comenté .. PHP sube el archivo desde HTTP a un directorio "común" de ese servidor (en sistemas linux el /tmp .. lo define la directiva: upload_tmp_dir) .. ese directorio está fuera del alcance de cualquier cuenta de FTP de un servidor "compartido" por eso .. vía FTP no podrías mover ese archivo desde ese sitio concreo hacia su destino definitivo en tu sitio (al cual si que tiene acceso la cuenta de FTP que se use).

Tendrías que configurar una cuenta FTP con acceso desde el "root" de ese servidor .. cosa extremadamente peligrosa .. Por eso PHP ya tiene esas funciones que son exclusivas para esas taréas y de forma segura (sobre todo la de move_uploaded_file()) ....

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 16/03/2004, 13:02
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 13 años, 9 meses
Puntos: 0
No me FUNCAAAA!!!!! grrr

Alguien digame por que este maldito codigo no me sube ningun archivo a ningun lado.
??????????

<?php
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], "/Pagina");
} else {
echo "Possible file upload attack. Filename: " . $HTTP_POST_FILES['userfile']['name'];
}
?>


<form enctype="multipart/form-data" action="<? echo $PHP_SELF;?>" method="post">
<INPUT type="hidden" name="lim_tamano" value="500000">
<p><font size="2"><b><font color="#9966CC" face="Verdana, Arial, Helvetica, sans-serif"><strong>Archivo a transferir</strong></font></font><br>
<INPUT type="file" name="userfile"></p>
<p><INPUT type="submit" name="enviar" value="Aceptar"></p>
</FORM>
  #8 (permalink)  
Antiguo 16/03/2004, 13:49
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
hombre mira bien tu codigo, le dices mueveme el archivo de la carpeta temp a la carpeta /Pagina, pero no le dices cual

move_uploaded_file($HTTP_POST_FILES['userfile']['t
mp_name'], "/Pagina");

es lo que pones

deeria ser:

move_uploaded_file($HTTP_POST_FILES['userfile']['t
mp_name'], "Ruta_completa/Pagina/".$HTTP_POST_FILES['userfile']['name']);

saludos
  #9 (permalink)  
Antiguo 17/03/2004, 06:40
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 13 años, 9 meses
Puntos: 0
y eso que el codigo es un ejemplo que viene en el manual y supuestamente tenia que andar.... ha! que caca!
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #10 (permalink)  
Antiguo 17/03/2004, 10:45
 
Fecha de Ingreso: diciembre-2003
Mensajes: 65
Antigüedad: 14 años
Puntos: 1
Hay muchas maneras de subir archivos a la web te voy a mostrar las formas que he usado y si me han servido.

POR MEDIO DE LA FUNCION copy();
-------------------------------------------------
Código PHP:
Procesamos los datos enviados por el formulario:
<?
if ($_POST["subir"]){
$extension explode(".",$archivo_name);//AQUI ES OPCIONAL SI SOLO QUIERES QUE SE SUBAN ARCHIVOS DE UN SOLO TIPO POR EJEMPLO ZIP.
if ($extencion[0] == "zip") {
copy($archivo_name,"Directorio donde subira/".$archivo_name);
}else{
echo 
"Solo archivos zip";
}
}
?>


Creamos el formulario:

<form name="uploader" method="POST" action="<?=$PHP_SELF?>" enctype="multipart/form-data">
<input type="file" name="archivo">
<input type="submit" name="subir" value="Subir">
</form>
--------------------------------------------------




POR MEDIO DE LA FUNCION move_uploaded_file(); es lo mismo que copy solo que aveces no sirve al igual que copy en miarroba si funiona esta forma para subir archivos.
-------------------------------------------------
Código PHP:
Procesamos los datos enviados por el formulario:
<?
if ($_POST["subir"]){
$extension explode(".",$archivo_name);//AQUI ES OPCIONAL SI SOLO QUIERES QUE SE SUBAN ARCHIVOS DE UN SOLO TIPO POR EJEMPLO ZIP.
if ($extencion[0] == "zip") {
move_uploaded_file($archivo_name,"Directorio donde subira/".$archivo_name);
}else{
echo 
"Solo archivos zip";
}
}
?>


Creamos el formulario:

<form name="uploader" method="POST" action="<?=$PHP_SELF?>" enctype="multipart/form-data">
<input type="file" name="archivo">
<input type="submit" name="subir" value="Subir">
</form>
--------------------------------------------------




POR MEDIO DE LAS FUNCIONES DE FTP
-------------------------------------------------
Código PHP:
Procesamos los datos enviados por el formulario:
<?
if ($_POST["subir"]){
$host="El host de tu FTP";
$user "Usuario del FTP";
$pass "Password del FTP";
$extension explode(".",$archivo_name);//AQUI ES OPCIONAL SI SOLO QUIERES QUE SE SUBAN ARCHIVOS DE UN SOLO TIPO POR EJEMPLO ZIP.
if ($extencion[0] == "zip") {
$conexion ftp_connect($host);
ftp_login($conexion,$user,$pass); 
ftp_put($conexion,"Carpeta donde subira el archivo/".$archivo_name,$archivo,FTP_BINARY);
}else{
echo 
"Solo archivos zip";
}
}
?>


Creamos el formulario:

<form name="uploader" method="POST" action="<?=$PHP_SELF?>" enctype="multipart/form-data">
<input type="file" name="archivo">
<input type="submit" name="subir" value="Subir">
</form>
--------------------------------------------------

Para más ayuda bajate el manual de http://php.net te ayudara mucho.
  #11 (permalink)  
Antiguo 17/03/2004, 12:45
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 13 años, 9 meses
Puntos: 0
Mil Gracias a todos los que me respondieron !!!!!!

Gracias Cluster (por explicar lo del safe mode), Gracias Jordi1 (especialmente por la paciencia, no habia notado que al codigo habia que agregarle el nombre del archivo (como en el codigo ejemplo no estaba.. ni se me ocurrio)) y Gracias hYuNkEl (por los codigos que me enviaste, estan muy buenos y los voy a revisar!!)

elwolos
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #12 (permalink)  
Antiguo 17/03/2004, 14:55
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Como diria Cluster no estan mal, porque no los subes a las Faqs
y de paso aprenden todos :)

Esa pregunta de subir ficheros al host es muy solicitada aqui
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #13 (permalink)  
Antiguo 17/03/2004, 16:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
(En las FAQ's ya hay ejemplos .. pero si este(os) los consideran más explicativos o completos .. suban sus alternativas, pero intenten explicar el código que usen y aportar algo diferente a lo que hagan los otros)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 05:17.