Foros del Web » Programando para Internet » PHP »

Mover un archivo

Estas en el tema de Mover un archivo en el foro de PHP en Foros del Web. Hay alguna forma de mover un archivo de directorio? No hablo de copiar y borrar, sino mover. Es porque necesito mover gran cantidad de información ...
  #1 (permalink)  
Antiguo 12/04/2003, 07:27
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Mover un archivo

Hay alguna forma de mover un archivo de directorio? No hablo de copiar y borrar, sino mover.

Es porque necesito mover gran cantidad de información y si copio+borro, tarda más que si muevo.

Pensé en usar exec() con move (trabajo cobre windows), pero en ese caso tendría que hallar la forma de convertir los nombres de archivos largos a formato 8.3 de DOS y no encuentro la manera correcta de hacerlo.

¿alguna idea?
  #2 (permalink)  
Antiguo 12/04/2003, 11:05
Avatar de sdf23  
Fecha de Ingreso: diciembre-2002
Mensajes: 297
Antigüedad: 15 años
Puntos: 0
no se me ocurre otro idea mas que

copy($archivo,$destino);
delete($archivo);
__________________

la vida es bella cuando no es culera
  #3 (permalink)  
Antiguo 12/04/2003, 12:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En PHP no existe (que yo sepa) una función nativa tipo "move()" .. Podrías hacerlo si quieres haciendo un exec() al S.O. y ejecutando el comando de mover sengun corresponda a tu S.O. del servidor que uses y si dispones permisos para ejecutar exec() (o funciones afienes) y/o de ejecutar esa operación de mover ...

Por otro lado .. la técnica es la que describe sdf23 .. eso sí .. delete() no existe en PHP .. es mas .. miren que "graciosos" los de de php.net en el manual:

Cita:
delete
See unlink or unset ()
void delete ( string file )

This is a dummy manual entry to satisfy those people who are looking for unlink() or unset() in the wrong place.

See also: unlink() to delete files, unset() to delete variables.
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 13/04/2003, 12:37
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Pense en move de DOS, pero como dije tendría que hallar la forma de convertir los nombres de archivos largos a formato 8.3 de y no encuentro la manera correcta de hacerlo.

Pense que la solucion podria estar por usal las funciones w32api, voy a investigar por ese lado, pero dudo que encuente la forma correcta.
  #5 (permalink)  
Antiguo 13/04/2003, 16:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mmm pues el formato 8.3 con un nombre largo así por encima hace:

6caracteres el caracter tipico y nºde caracteres restantes ... Tal vez por ahí puedas hacerte tu conversor .. Tendrías q entrar a estudiar como se lo hace el S.O. para trabajarse un nombre de archivo largo para dejarlo en 8.3 ..

Pero vamos .. no sé porqué te complicas tanto .. el copy() e unlink() de PHP son "transparentes" ante el S.O. que corran .. así podrás migrar tu aplicación sin ningun problema a otro PHP bajo otro S.O. .. usar exec() te obligaría hacer varias versiones .. tantas como S.O. estimes que podría trabajar tu aplicación ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 13/04/2003, 16:24
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Cluster, no es un capricho mio, es una cuestion de necesidad. Lo que sucede es que debo mover como 7Gb obviamente copy+unlink tarda una eternidad.
Hay algo que no aclare, no es un script para ejecutarlo desde el server, si no desde la CLI y el para usarlo yo una sola vez. Asi que la compatibilidad con diferentes SO no es requerida.
Igualmente ya lo solucione, y me explico para el iteres general...

Al final la funcion nativa para mover no era mas que rename();
http://www.php.net/rename

Pero igual yo de cabecero trate de sacarlo con las API y aca esta!:
Código PHP:
<?php
$origen 
"c:\\windows\\escritorio\\Nuevo Documento de texto.txt";
$destino "c:\\windows\\escritorio\\nueva1\\Nuevo Documento de texto.txt";

$api = new win32;
$api->registerfunction("long MoveFile (string a, string b) From Kernel32.dll");
if (
$api->MoveFile($origen$destino) == 0) {
    echo 
"No se pudo mover el archivo $origen hasta $destino";
} else {
    echo 
"Se movio el archivo $origen hasta $destino";
}
?>
Saludos!
  #7 (permalink)  
Antiguo 13/04/2003, 16:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok,

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 15:08.