Foros del Web » Programando para Internet » PHP »

tomar datos de un archivo de texto

Estas en el tema de tomar datos de un archivo de texto en el foro de PHP en Foros del Web. hola a todos... estoy tratando de crear un formulario que tenga el boton examinar en el cual vaya y seleccione un archivo y capture linea ...
  #1 (permalink)  
Antiguo 21/10/2003, 10:16
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
tomar datos de un archivo de texto

hola a todos... estoy tratando de crear un formulario que tenga el boton examinar en el cual vaya y seleccione un archivo y capture linea por linea...
realmente no he encontrado algo asi... salvo q lo he visto asi como funciona el phpmyadmin cuando uno va a examinar y pone un archivo sql y al presionar siguiente de ejecutan sus querys...

si alguien tiene algo o me puede ayudar se lo agradeceria...

ademas q me saltaron una duda... cuando hago estos tipos es necesario subir el archivo al servidor o lo puedo tomar como lectura solamente?

Ojala me puedan ayudar... ya q realize la busqueda aqui en el foro y no encontre algo parecido..
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #2 (permalink)  
Antiguo 21/10/2003, 10:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Es necesario que lo subas al servidor para que PHP lo procese... PHP no puede acceder directamente a un archivo del cliente como para abrirlo, tomarlo y procesarlo sin subirlo al servidor ..

Así que te hace falta dos cosas:

1) subir el archivo al servidor (Upload) .. no sé si esto ya lo tendrás claro? .. de todas formas en las FAQ's hay ejemplos.

2) procesar el archivo una vez subido .. Para eso abres el archivo hacia una variable o usas funciones como fgets() y afines para ir leyendo el archivo hasta que finalice su contenido. Y .. a partir de ahí el proceso que le des ya es cosa del resto de tu lógica.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 21/10/2003, 10:36
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
yo pense q podia leerse desde el cliente... pero mi duda es q este archivo es temporal por lo cual no necesito q resida en el sitio...
como evito q por algun motivo el archivo no fue eliminado y el q se esta subiendo sea el mismo nombre no me marque error de upload?
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #4 (permalink)  
Antiguo 21/10/2003, 10:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues para eso tienes funciones como is_file() para chequear que no tengas ese archivo del mismo nombre en tu servidor (antes de que lo puedas haber borrado) .. Tambien puedes cambiar el nombre cuando lo dejes en su destino definitivo atendiendo a los otros archivos que tengas para que no se repita .. o generar un nombre "temporal" aleatorio (un MD5() por ejemplo te serviria en función de time() .. )

Y cuando subas el archivo y lo proceses .. le haces un unlink() para borrarlo.

Si por A o B motivo te quedaron archivos sin borrar .. puedes hacerte un pequeño script que haga un unlink() de todo lo que tenga ese directorio temporal .. a intervalos de tiempo y que lo heche andar todo esto un CRON tab de sistema (Linux . si usas windows será un "Programador de tareas o similar" ...)

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 21/10/2003, 11:58
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
gracias... he revisado las funciones q dices pero aun no logro q me suba el archivo tengo una copia de lo expuesto en la FAQ pero me marca error tengo esto
Código PHP:
$i 0;
if__(is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i]))_{
    
$split_path_=_split("/",_$HTTP_POST_FILES['userfile']['name'][$i]);
    
$split_path_=_end_($split_path);
    
$extension_=_split("[/.]",_$split_path);
    
if_(end($extension)_==_"php"_||_end($extension)_==_"php3")_{
        
echo_"tipo de archivo invalido";
    }
_else_{
            
$RUTA_UPLOADED_=_"upload/";
            
$NOMBRE_FILE_=_"prueba_"_._"."_._end($extension);
            
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i],_$RUTA_UPLOADED_._$NOMBRE_FILE);
    }


y me reclama donde sale el if is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name']

me sale un parse error y me apunta esa linea!! ...
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #6 (permalink)  
Antiguo 21/10/2003, 13:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ahí no sé .. al colocar este código han salido algunos ___ de más en lugar de espacios .. Supongo en tu código original los tendrás correctamente, si no es así revisalo ..

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 21/10/2003, 13:15
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
emm justo... yo solo hice un copy paste del codigo de faq pero en el edito no me lo marcaba asi solo cuando lo postee.. asi q tuve q reeescribir denuevo y funciona osea... no me marca error pero no me funciona el upload...
puse un else donde sale if is_uploaded_file($HTTP_POST_FILES['userfile'.....
y entra al else por lo tanto no me toma el valor....
el inclusive lo probe con _FILES['userfile']['name']
y nada!!!...
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #8 (permalink)  
Antiguo 21/10/2003, 14:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas _FILES .. sería $_FILES ...

De todas formas .. visita la documentación oficial de PHP.net sobre el tema de "upload" de archivos.

http://www.php.net/manual/en/features.file-upload.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 21/10/2003, 14:52
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
definitivo no me quiere funcionar, y ahora trate de hacerlo segun el ejemplo de la funcion
cree una carpeta llamada upload en el cual existe un archivo index.php e ing.php y una carpeta llamada files q es donde quiero q se almacene los archivos

tengo lo siguiente en codigo
Código PHP:
#index.php
<form enctype="multipart/form-data" action="ing.php" method="POST">
<
input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<
input type="submit" value="Send File">
</
form
y el ing.php
Código PHP:
#ing.php
<?php
$uploaddir 
'/files/';
$uploadfile $uploaddir$_FILES['userfile']['name'];

print 
"<pre>";
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    print 
"File is valid, and was successfully uploaded. ";
    print 
"Here's some more debugging info:\n";
    
print_r($_FILES);
} else {
    print 
"Possible file upload attack!  Here's some debugging info:\n";
    
print_r($_FILES);
}
print 
"</pre>";

?>

y este el el mensaje q me sale y no me toma el valor de la variable!!
Possible file upload attack! Here's some debugging info:
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #10 (permalink)  
Antiguo 21/10/2003, 15:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
$uploaddir = '/files/';

seguro q trajas así el directorio donde quieres almacenar tus imagenes?

lo tienes creado ..?

usa simplemente:

$uploaddir = "./files/";

suponiendo que el directorio files está creado y con permisos de escritura debajo de donde ejecutas ese script ...

El error te lo dá por qué no ha podido completar el "movimiento" del archivo a su destino .. y si no me equivoco es por esa ruta que no existe (por lo menos desde el supuesto "raiz!" de un servidor linux ...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 21/10/2003, 15:38
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
sip... tal cual lo dices lo tengo con permiso de escritura y lo cree yo para hacerla mas facil.. pero lo q no entiendo es pq no me toma el valor de $_FILE
ya q probe con die($_FILE['userfile']);
die($_FILE['userfile']['tmp_name']);
die($_FILE['userfile']['name']);

probe estas tres para q me indicara el valor pero nada!! no lo logro entender!!
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #12 (permalink)  
Antiguo 21/10/2003, 17:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y que versión de PHP usas?

Por qué $_FILES sólo está disponible desde PHP 4.1.0 ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 21/10/2003, 18:05
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
emm tengo 4.0... pero si bien no me toma con $_FILES deberia tomarme con $HTTP_POST_FILES pero tampoco!!!...
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #14 (permalink)  
Antiguo 21/10/2003, 19:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
4.0.qué ? .... No crees que es hora de una acctualización? xDDD

En PHP son muyyyyy importantes las versiones .. y los "tres" números que la componen:

Algunas notas de PHP sobre esa versión (4.0.x):

Cita:
Nota: track_vars esta activado siempre desde PHP 4.0.3. A partir de PHP 4.1.0 , $_FILES puede ser utilizado alternativamente a $HTTP_POST_FILES. $_FILES es siempre global asi que global no debe ser usado con $_FILES en el ámbito de función.
Incluso $HTTP_POST_FILES apareció en la versión 4.0.2

Cita:
Los siguientes ejemplos son validos para versiones de PHP 4 superiores a la 4.0.2.
(se refiere a los ejemplos del manual):

http://www.php.net/manual/es/features.file-upload.php

Si usas tu PC como servidor .. actualizate la versión de PHP y si es un servicio de hosting .. dales el toque de atención ..


Un saludo,

PD: si continuas con tu versión 4.0.? .. para próximas preguntas indica que usas Tal versión de PHP .. Por qué por tendencia y "buenas maneras" yo por ejemplo suelo recomendar el uso de los array superglobales que sólo están disponibles desde PHP 4.1.0 en adelante .. ademas que TU con esa versión de PHP vas a tener que fijarte bien en el manual oficial de PHP al usar tal o cual función desde que versión está disponible (eso lo indica sobre todo en la versión en ingles ..)
__________________
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; 21/10/2003 a las 19:58
  #15 (permalink)  
Antiguo 22/10/2003, 08:50
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
emm tienes razon...
y tambien se q recomiendas el uso de array superglobales... a lo cual he ocupado super bien (en sitio free)... pero el problema lo tengo aca en donde trabajo....
me dijeron q tenian esa version de php y pedi si la podian actualizar y me dijeron q la persona que lo hizo ya no esta... entonces yo nose como hacerlo.... ademas esta bajo linux que para mi es mas dificil entender... pq si hubiese sido en window lo hubiese probado yo mismo....
si sabes como actualizar te agradeceria q me ayudaras o me orientaras o como salvo la version para tocar y hacer cambios..

De antemano Gracias....
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #16 (permalink)  
Antiguo 22/10/2003, 22:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. de Linux se poco .. De todas formas hay mucho tutorial "paso a paso" para instalar PHP .. e incluso si usases algún RPM para la distribución de Linux que uses podrías actualizarlo bajo tu interface X-Windows (lease Gnome o similares) que uses a golpe de ratón ..(sin tocar para nada la consola ..)

Pregunta todo esto en el foro de Linux o en el de "Servidores Web" que seguro que te orientan mejor (que yo al menos ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #17 (permalink)  
Antiguo 23/10/2003, 08:43
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
ok... gracias cluster!!!!
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
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:55.