Foros del Web » Programando para Internet » PHP »

No se a que ruta me envio el archivo

Estas en el tema de No se a que ruta me envio el archivo en el foro de PHP en Foros del Web. Hola tengo el siguiente script que parece que ya me funciono... es muy bueno de echo espero les sirva... solo que tengo un problema... no ...
  #1 (permalink)  
Antiguo 15/08/2008, 16:40
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
No se a que ruta me envio el archivo

Hola tengo el siguiente script que parece que ya me funciono... es muy bueno de echo espero les sirva...
solo que tengo un problema... no logro saber a que ruta manda los arhivos y no se donde pueda cambiar la ruta....
se los paso.. consta de dos partes... el formulario para recojer los arhivos y php para subirlos... por cierto usa javascript para hacer la funcion de multiples archivos

Código PHP:
<? 

if($boton) { 
    if (
is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) { 
      
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']); 
      
$subio true
    } 

if(
$subio) { 
    echo 
"El archivo subio con exito"
} else { 
    echo 
"El archivo no cumple con las reglas establecidas"

die(); 

?> 



<script type="text/javascript">var numero = 0; 
evento = function (evt) { 
          
             return (!evt) ? event : evt;}
           //Aqui se hace lamagia... jejeje, esta funcion crea dinamicamente los nuevos campos file
           addCampo = function () { 
           //Creamos un nuevo div para que contenga el nuevo campo
              nDiv = document.createElement('div');
           //con esto se establece la clase de la div 
             nDiv.className = 'archivo';
           //este es el id de la div, aqui la utilidad de la variable numero
           //nos permite darle un id unico
              nDiv.id = 'file' + (++numero);
           //creamos el input para el formulario:
              nCampo = document.createElement('input');
           //le damos un nombre, es importante que lo nombren como vector, pues todos los campos
           //compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php
              nCampo.name = 'archivos[]';
           //Establecemos el tipo de campo  
            nCampo.type = 'file';
           //Ahora creamos un link para poder eliminar un campo que ya no deseemos 
             a = document.createElement('a');
           //El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla  
            a.name = nDiv.id;
           //Este link no debe ir a ningun lado 
             a.href = '#';
           //Establecemos que dispare esta funcion en click 
             a.onclick = elimCamp;
           //Con esto ponemos el texto del link 
             a.innerHTML = 'Eliminar';
           //Bien es el momento de integrar lo que hemos creado al documento,
           //primero usamos la función appendChild para adicionar el campo file nuevo 
             nDiv.appendChild(nCampo);
           //Adicionamos el Link  
            nDiv.appendChild(a);
           //Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
           //con esta función obtenemos una referencia a ella para usar de nuevo appendChild
           //y adicionar la div que hemos creado, la cual contiene el campo file con su link de eliminación:
              container = document.getElementById('adjuntos');   container.appendChild(nDiv);}
           
           //con esta función eliminamos el campo cuyo link de eliminación sea presionado
           elimCamp = function (evt){  
            evt = evento(evt);  
             nCampo = rObj(evt);   
            div = document.getElementById(nCampo.name);   
            div.parentNode.removeChild(div);}
           
           //con esta función recuperamos una instancia del objeto que disparo el evento
           rObj = function (evt) {    return evt.srcElement ?  evt.srcElement : evt.target;}
           </script>



 <form name="formu" id="formu" action="upload.php" method="post" enctype="multipart/form-data">     <dl>               <dt><label>Archivos a Subir:</label></dt>        <!-- Esta div contendrá todos los campos file que creemos -->  
 
  <dd>
 <div id="adjuntos">        <!-- Hay que prestar atención a esto, el nombre de este campo debe siempre terminar en []        como un vector, y ademas debe coincidir con el nombre que se da a los campos nuevos         en el script -->  
  <input type="file" name="archivos[]" /><br />   </div>
 
 
 </dd>   <dt><a href="#" onClick="addCampo()">Subir otro archivo</a></dt>         <dd><input type="submit" value="Enviar" id="envia" name="envia" /></dd>     </dl></form>

</body>
</html>
Código PHP:
<?php    

         
if (isset ($_FILES["archivos"])) {         
         
$tot count($_FILES["archivos"]["name"]);
         for (
$i 0$i $tot$i++){ 
         
$tmp_name $_FILES["archivos"]["tmp_name"][$i]; 
                    
$name $_FILES["archivos"]["name"][$i];  
                 echo(
"<b>Archivo </b> $key "); 
                 echo(
"<br />"); 
                   echo(
"<b>el nombre original:</b> "); 
                   echo(
$name); 
                 echo(
"<br />");
                 echo(
"<b>el nombre temporal:</b> \n");
                 echo(
$tmp_name); 
                 echo(
"<br />");  
                                       }      }      
?>
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #2 (permalink)  
Antiguo 15/08/2008, 17:15
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 8 meses
Puntos: 55
Respuesta: No se a que ruta me envio el archivo

y donde va la segudna parte?

dos cositas
1.- no uses copy usa move_uploaded_file();
2.- php no recomienda usar $HTTP_POST_FILE desde hace rato largo mejor utiliza $_FILES

en el copy no has puesto ninguna carpeta en el paraetro destino por ende se deberian estar guardando en la misma carpeta que estas ejecuntando el script

saludos
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 15/08/2008, 17:53
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: No se a que ruta me envio el archivo

Perdon me habia cuatrapeado con el anterior codigo...
te lo paso de nuevo.. como segun eso debe funcionar.. y no me funciona...

Tengo un archivo llamado subir.php que tiene este codigo

Código PHP:


<script type="text/javascript">var numero 0
evento = function (evt) { 
          
             return (!
evt) ? event evt;}
           
//Aqui se hace lamagia... jejeje, esta funcion crea dinamicamente los nuevos campos file
           
addCampo = function () { 
           
//Creamos un nuevo div para que contenga el nuevo campo
              
nDiv document.createElement('div');
           
//con esto se establece la clase de la div 
             
nDiv.className 'archivo';
           
//este es el id de la div, aqui la utilidad de la variable numero
           //nos permite darle un id unico
              
nDiv.id 'file' + (++numero);
           
//creamos el input para el formulario:
              
nCampo document.createElement('input');
           
//le damos un nombre, es importante que lo nombren como vector, pues todos los campos
           //compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php
              
nCampo.name 'archivos[]';
           
//Establecemos el tipo de campo  
            
nCampo.type 'file';
           
//Ahora creamos un link para poder eliminar un campo que ya no deseemos 
             
document.createElement('a');
           
//El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla  
            
a.name nDiv.id;
           
//Este link no debe ir a ningun lado 
             
a.href '#';
           
//Establecemos que dispare esta funcion en click 
             
a.onclick elimCamp;
           
//Con esto ponemos el texto del link 
             
a.innerHTML 'Eliminar';
           
//Bien es el momento de integrar lo que hemos creado al documento,
           //primero usamos la función appendChild para adicionar el campo file nuevo 
             
nDiv.appendChild(nCampo);
           
//Adicionamos el Link  
            
nDiv.appendChild(a);
           
//Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
           //con esta función obtenemos una referencia a ella para usar de nuevo appendChild
           //y adicionar la div que hemos creado, la cual contiene el campo file con su link de eliminación:
              
container document.getElementById('adjuntos');   container.appendChild(nDiv);}
           
           
//con esta función eliminamos el campo cuyo link de eliminación sea presionado
           
elimCamp = function (evt){  
            
evt evento(evt);  
             
nCampo rObj(evt);   
            
div document.getElementById(nCampo.name);   
            
div.parentNode.removeChild(div);}
           
           
//con esta función recuperamos una instancia del objeto que disparo el evento
           
rObj = function (evt) {    return evt.srcElement ?  evt.srcElement evt.target;}
           
</script>



 <form name="formu" id="formu" action="upload.php" method="post" enctype="multipart/form-data">     <dl>               <dt><label>Archivos a Subir:</label></dt>        <!-- Esta div contendrá todos los campos file que creemos -->  
 
  <dd>
 <div id="adjuntos">        <!-- Hay que prestar atención a esto, el nombre de este campo debe siempre terminar en []        como un vector, y ademas debe coincidir con el nombre que se da a los campos nuevos         en el script -->  
  <input type="file" name="archivos[]" /><br />   </div>
 
 
 </dd>   <dt><a href="#" onClick="addCampo()">Subir otro archivo</a></dt>         <dd><input type="submit" value="Enviar" id="envia" name="envia" /></dd>     </dl></form>

</body>
</html> 
y tengo un archivo llamado upload.php

Código PHP:
<?php 
   
//Preguntamos si nuetro arreglo 'archivos' fue definido
         
if (isset ($_FILES["archivos"])) {
         
//de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
         //obtenemos la cantidad de elementos que tiene el arreglo archivos
         
$tot count($_FILES["archivos"]["name"]);
         
//este for recorre el arreglo
         
for ($i 0$i $tot$i++){
         
//con el indice $i, poemos obtener la propiedad que desemos de cada archivo
         //para trabajar con este
            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$name $_FILES["archivos"]["name"][$i];
            echo(
"<b>Archivo </b> $key ");
            echo(
"<br />");
            echo(
"<b>el nombre original:</b> ");
            echo(
$name);
            echo(
"<br />");
            echo(
"<b>el nombre temporal:</b> \n");
            echo(
$tmp_name);
            echo(
"<br />");            
            }
      }      
?>
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #4 (permalink)  
Antiguo 15/08/2008, 18:15
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: No se a que ruta me envio el archivo

Si sirve de algo aclarar, acabo de darme cuenta... que el codigo PHP no esta del todo bien... me dijeron que era con fin de lustrar la idea...

pero no sirve bien el codigo php lo demas del script parece que sirve :D
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #5 (permalink)  
Antiguo 15/08/2008, 20:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No se a que ruta me envio el archivo

mira, si lees con atención la documentación de cada función que usas.. puedes ver de que manera sirven los parámetros...

por ejemplo, move_uploaded_file() o copy() se explican solos....

Código:
copy([ORIGEN], [DESTINO])
move_uploaded_file([ORIGEN], [DESTINO])
ahora, ya sabiendo esto... a donde crees tu que se movieron los archivos???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 15/08/2008, 22:59
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: No se a que ruta me envio el archivo

ok... si entiendo mas o menos pero como no he estudiado mucho programacion no conozco los conceptos basicos.

este el codigo que necesito arreglar
Código PHP:
<?php 
   
//Preguntamos si nuetro arreglo 'archivos' fue definido
         
if (isset ($_FILES["archivos"])) {
         
//de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
         //obtenemos la cantidad de elementos que tiene el arreglo archivos
         
$tot count($_FILES["archivos"]["name"]);
         
//este for recorre el arreglo
         
for ($i 0$i $tot$i++){
         
//con el indice $i, poemos obtener la propiedad que desemos de cada archivo
         //para trabajar con este
            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$name $_FILES["archivos"]["name"][$i];
            echo(
"<b>Archivo </b> $key ");
            echo(
"<br />");
            echo(
"<b>el nombre original:</b> ");
            echo(
$name);
            echo(
"<br />");
            echo(
"<b>el nombre temporal:</b> \n");
            echo(
$tmp_name);
            echo(
"<br />");            
            }
      }      
?>
Si no me equivo lo que me recomiendas se inserta despues de la segunda linea

osea mas o menos asi.. pero no se como...

Código PHP:
<?php 
   
//Preguntamos si nuetro arreglo 'archivos' fue definido
         
if (isset ($_FILES["archivos"])) {
        if 
move_uploaded_file(["archivos"], ["carpetafinal"]);
         
//de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
         //obtenemos la cantidad de elementos que tiene el arreglo archivos
         
$tot count($_FILES["archivos"]["name"]);
         
//este for recorre el arreglo
         
for ($i 0$i $tot$i++){
         
//con el indice $i, poemos obtener la propiedad que desemos de cada archivo
         //para trabajar con este
            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$name $_FILES["archivos"]["name"][$i];
            echo(
"<b>Archivo </b> $key ");
            echo(
"<br />");
            echo(
"<b>el nombre original:</b> ");
            echo(
$name);
            echo(
"<br />");
            echo(
"<b>el nombre temporal:</b> \n");
            echo(
$tmp_name);
            echo(
"<br />");            
            }
      }      
?>
prometo comprar mi manual de php en cuanto lo encuentre
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #7 (permalink)  
Antiguo 15/08/2008, 23:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No se a que ruta me envio el archivo

no, lo estas entendiendo mal... y haciendo mal, por cierto....

este es tu código inicial...

Código:
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
bien, te dijeron que lo corrigieras... que obtuviste? (supongo que esto)

Código PHP:
move_uploaded_file($_FILES['archivo']['tmp_name'], $_FILES['archivo']['name']); 
ahora, que tiene de curioso si entendiste algo de mi ejemplo.... me sorprendería

["de_donde_sacaste_esto"] (eso no es una variable ni algo valido en PHP)

Código:
como puedes ver este es el ejemplo:

$a = $_FILES['archivo']['tmp_name']; // variable A
$b = $_FILES['archivo']['name']; // variable B

// ahora, $a es el archivo temporal
// mientras, $b es el nombre del archivo original

move_uploaded_file($a, $b);
cuando eliges un nombre distinto al original ($b) te darás cuenta de que se guarda con ese nombre de archivo.... pero... y ¿donde?

el donde depende de su ruta, como solo esta entregando un nombre se toma como un solo archivo... en este modo, se coloca en la raíz de los documentos web (o donde este el script ejecutándose, o el index.php)

ahora, si quieres agregarle un ruta especifica para poder manejarlos es simple...

Código:
// sabemos que $b es el nombre y/o ruta del archivo a guardar
// entonces simplemente creamos una carpeta y se la añadimos al archivo ($b)

$b = 'mi_carpeta/' . $b;
y todo funcionara normalmente (supongo)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 16/08/2008, 00:12
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: No se a que ruta me envio el archivo



lo puse asi y sigue sin funcionarme

Código PHP:
<?php 
         
if (isset ($_FILES["archivos"])) {
         
         
$a $_FILES['archivos']['tmp_name']; // variable A
         
$b $_FILES['archivos']['name']; // variable B
        
             
move_uploaded_file($a$b);

         
$tot count($_FILES["archivos"]["name"]);

         for (
$i 0$i $tot$i++){

            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$name $_FILES["archivos"]["name"][$i];
            echo(
"<b>Archivo </b> $key ");
            echo(
"<br />");
            echo(
"<b>el nombre original:</b> ");
            echo(
$name);
            echo(
"<br />");
            echo(
"<b>el nombre temporal:</b> \n");
            echo(
$tmp_name);
            echo(
"<br />");            
            }
      }      
?>
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #9 (permalink)  
Antiguo 16/08/2008, 00:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No se a que ruta me envio el archivo

genial!! copias y pegas... no entendiste la idea....

si te das cuenta, y vaya que es tu código.... estas tomando la variable de $_FILES como un arreglo, y eso esta bien.... entonces... ¿porque colocaste el código ahí?? antes del arreglo... por eso es el error... deberías haberlo echo individualmente :s

Código PHP:
         //para trabajar con este
            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$name $_FILES["archivos"]["name"][$i]; 
            
move_uploaded_file($tmp_name$name); 
espero quede claro, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 16/08/2008, 05:52
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 566
Antigüedad: 18 años, 5 meses
Puntos: 24
Respuesta: No se a que ruta me envio el archivo

al parecer este código no lo hiciste tu... trata de solo buscar las ideas o ayudas de como hacerlo, no buscar la solucion completa, porque asi nunca se aprende
__________________
www.marcher.com.uy - Web personal
Nerd's Corner - Desarrollo de software a medida
  #11 (permalink)  
Antiguo 16/08/2008, 09:04
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: No se a que ruta me envio el archivo

muchas gracias por fin logre terminar la primera parte de mi script de galerias que voy a hacer

Gracias tmb a pateketrueke por la ayuda y los sarcasmos.. jaja
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
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 04:43.