Foros del Web » Programando para Internet » PHP »

Eliminar contenido de un archivo de texto

Estas en el tema de Eliminar contenido de un archivo de texto en el foro de PHP en Foros del Web. Buenas tardes a todos. Estoy trabajando en un upload de archivos. Tengo el siguiente problema: necesito ir escribiendo en un archivo de texto la cantidad ...
  #1 (permalink)  
Antiguo 11/08/2008, 12:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Eliminar contenido de un archivo de texto

Buenas tardes a todos. Estoy trabajando en un upload de archivos. Tengo el siguiente problema: necesito ir escribiendo en un archivo de texto la cantidad de bytes que han sido leidos y escritos. Actualmente este es mi código:

Código PHP:
$src fopen($_FILES['archivo']['tmp_name'], 'r');
$dst fopen('C:\\'.$_FILES['archivo']['name'], 'w+');
$tmp fopen('C:\\tmp_file.txt','w');
$bytes 0;
while ( 
$data fread($src1024) )
{
     
$bytes += fwrite($dst$data);
     
fwrite($tmp$bytes);
}        

fclose($dst);
fclose($src);
fclose($tmp); 
El archivo temporal en el que almaceno el número de bytes escritos me va agregando uno atrás del otro el número correspondiente. Una forma de obtener lo que estoy buscando es abrir el archivo cada vez que quiero escribir datos, de esta forma el fichero vuelve siempre a cero y puedo escribir un valor nuevo empezando desde ahí y de esta forma me aseguro que el único dato que tiene este fichero es el último valor actualizado de los bytes leídos. Como dije, esta es una forma de lograrlo, pero quiero encontrar una manera más eficaz de hacerlo, ya que no quiero tener que abrir y cerrar el archivo en cada iteración del bucle. Probé utilizando ftruncate() dando el valor de 0, pero esta función el efecto que tiene en mi código es dejar el archivo sin contenido. Gracias de antemano. Saludos.
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 11/08/2008, 12:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Eliminar contenido de un archivo de texto

Hola mariano_donati,

¿Probaste usando fseek() para volver a 0?

Saludos.
  #3 (permalink)  
Antiguo 11/08/2008, 12:37
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: Eliminar contenido de un archivo de texto

No, no había pensado en esa. Gracias!.
__________________
Add, never Remove
  #4 (permalink)  
Antiguo 11/08/2008, 13:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: Eliminar contenido de un archivo de texto

Encontré otro error. Hasta ahora todos los tests que había realizado habían sido con archivos de texto plano. Probe hacer lo mismo con archivos .exe, .zip, .mp3 y no me copia ningún byte en ellos. Esto se debe a que en realidad la página php no me está recibiendo los archivos, ya que si hago filesize($_FILES['archivo']['tmp_name']) no me arroja nada. ¿Tengo que cambiar el content-type de mi form para que si pueda enviar esta clase de archivos?.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 11/08/2008, 13:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Eliminar contenido de un archivo de texto

Hola mariano_donati,

Desafortunadamente PHP no le entrega el control a tu script hasta tener todos los bytes completos.

Hay una extensión php_upload.dll que genera un token que puede monitorear el progreso de como se van subiendo los archivos.

Saludos.
  #6 (permalink)  
Antiguo 12/08/2008, 19:56
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: Eliminar contenido de un archivo de texto

Hola GatorV nuevamente. El problema no era ese, ya que efectivamente no se estaban subiendo los archivos al servidor local. En mi php.ini tenía estipulado un máximo de 2MB. Aunque esto fue una solución parcial, y que establecí el valor de upload_max_filesize a 50M y sin embargo no me sube archivos que sean mayores que 8MB. Me da estas tres advertencias:

Warning: fread(): supplied argument is not a valid stream resource in C:\wamp\www\Upload\upload.php on line 52

Warning: fclose(): supplied argument is not a valid stream resource in C:\wamp\www\Upload\upload.php on line 67

Warning: fclose(): supplied argument is not a valid stream resource in C:\wamp\www\Upload\upload.php on line 68

¿Alguna idea?
__________________
Add, never Remove
  #7 (permalink)  
Antiguo 12/08/2008, 19:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Eliminar contenido de un archivo de texto

Prueba cambiar el post_max_size, junto con set_time_limit.

Saludos.
  #8 (permalink)  
Antiguo 12/08/2008, 20:07
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: Eliminar contenido de un archivo de texto

Afortunadamente pude resolverlo. Resulta que la variable post_max_size del archivo php.ini estaba establecida en 8M y eso era lo que no me estaba permitiendo hacer subidas de mayor tamaño.
__________________
Add, never Remove
  #9 (permalink)  
Antiguo 12/08/2008, 20:08
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: Eliminar contenido de un archivo de texto

Exactamente eso GatorV. Gracias por tu respuesta. Saludos.
__________________
Add, never Remove
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 15:16.