Foros del Web » Programando para Internet » PHP »

Cambiar de lugar un archivo

Estas en el tema de Cambiar de lugar un archivo en el foro de PHP en Foros del Web. Hola!! bueno tengo una inquietud, no se como lo pueda solucionar, agradezco toda la ayuda posible, bueno yo tengo un formulario que me permite subir ...
  #1 (permalink)  
Antiguo 16/09/2011, 08:09
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Cambiar de lugar un archivo

Hola!! bueno tengo una inquietud, no se como lo pueda solucionar, agradezco toda la ayuda posible, bueno yo tengo un formulario que me permite subir documentos, y me los guarda en una carpeta destino llamada archivos,


InsertarArchivo.php

Código PHP:
Ver original
  1. //Evalua si todos los campos estan vacios
  2.  
  3. if ((isset($_POST['codigo']) && isset($_POST['nombre']) && isset($_POST['version']) && isset($_POST['Area']))
  4.  
  5. && ($_POST['codigo'] != "" || $_POST['nombre'] != "" || $_POST['version'] != "" || $_POST['Area'] != "" )) {
  6.  
  7.     //Se declaran las variables correspondientes a cada input del formulario
  8.     $Codigo=$_POST['codigo']; ---> Codigo del Documento
  9.  
  10.     $Nombre=$_POST['nombre'];---> Nombre del Documento
  11.  
  12.     $Version=$_POST['version']; ---> Version del Documento
  13.  
  14.     $Area=implode(",",$_POST['Area']); ---> Area a la que pertenece el Documento
  15.  
  16.     // Variable que contiene el nombre de la carpeta que se encargara de guaradar los documentos ($destino)
  17.     // Estas son las variables correspondientes al archivo que se sube
  18.     $destino='archivos';
  19.  
  20.     $nom_archivo = $_FILES['archivo']['name'];
  21.  
  22.     $tipo = $_FILES['archivo']['type'];
  23.  
  24.     $size = $_FILES['archivo']['size'];
  25.  
  26.     $tamano=$_FILES['file']['size'];
  27.  
  28.     // Se realiza un if indicando que si el tamano del documento que se suba es menor a 500, copie el archivo en la carpeta de destino
  29.        if($tamano < 500){
  30.  
  31.          copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']);
  32.          
  33.          require("Conexion.php");
  34.        
  35.          //Recibes el arreglo con los valores del checkbox
  36.           $val_chk= $_REQUEST['Area'];
  37.  
  38.           //Recorres el arreglo
  39.           foreach ($val_chk as $val ){
  40.  
  41.           //Consulta que me realiza una insercion en la base de datos, en la tabla area_documento
  42.           $consultica = "insert into `area_documento` (`Cod.Doc`,`Cod.Area`) values ('{$Codigo}','{$val}')";
  43.          
  44.           mysql_query($consultica, $Conexion) or die ( mysql_error());
  45.  
  46.           }
  47.           //Consulta que me realiza una insercion en la tabla datos, con los valores que se ingresen en los campos del formulario
  48.           $sql = "insert into `datos` (`Codigo`,`Nombre`,`Version`,`Adjunto`) values('{$Codigo}','{$Nombre}','{$Version}','{$_FILES['archivo']['name']}')";
  49.          
  50.           mysql_query($sql, $Conexion) or die ( mysql_error());
  51.        
  52.          echo '<center><b><h3>Se insertaron los datos correctamente</a></h3></b></center>';
  53.        
  54.          echo '<center><b><h3><a href=CargarDocumento.php> Regresar </a></h3></b></center>';
  55.  
  56.       }else {
  57.  
  58.          echo ("El tamaño es superior al permitido");
  59.  
  60.        }
  61.  
  62. }

Ahora lo que me piden es que cuando yo ingrese nuevamente un documento que ya este guardado en la carpeta Archivos, el anterior se me pase a otra carpeta llamada obsoletos, y en la carpeta archivos me que el nuevo.

Como podría realizar esto Agradezco toda la ayuda!!!
  #2 (permalink)  
Antiguo 16/09/2011, 08:16
 
Fecha de Ingreso: agosto-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Cambiar de lugar un archivo

Con la misma función de php ”copy”.

Primero copias el archivo anterior de tu carpeta “Archivos” a la carpeta “obsoletos”, y luego ingresas el nuevo archivo.

Otra solución, es cambiarle o agregarle un código al nombre de tus archivos, así, estos no se sobrescribirán.
__________________
Publicityextrim - http://www.publicityextrim.com
Email: [email protected]
..Lo que tu empresa necesita..
  #3 (permalink)  
Antiguo 16/09/2011, 08:56
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Cambiar de lugar un archivo

me darias un ejemplo por fa!!
  #4 (permalink)  
Antiguo 16/09/2011, 10:47
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Cambiar de lugar un archivo

es que me dijeron que con copy y con unlink pero no me funciona

Código PHP:
Ver original
  1. if (copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name'])) {
  2.        
  3.             unlink($cambiodestino.'/'.$_FILES['archivo']['name']);
  4.            
  5.             }

me sale este error

Warning: unlink(Obsoletos/MAN-04I4.pdf) [function.unlink]: No such file or directory in C:\AppServ\www\InsertarArchivo.php on line 52

alguien sabe como hacer!!
  #5 (permalink)  
Antiguo 16/09/2011, 10:53
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Cambiar de lugar un archivo

Hola jeMaGa, el error que te aparece con unlink es debido a que no encuentra el archivo en el directorio, revisa la estructura de tus carpetas , la variable $cambiodestino, debería ser la carpeta "antigua" donde se encuentra el archivo que copiaste.


Saludos.


__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #6 (permalink)  
Antiguo 16/09/2011, 11:02
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Cambiar de lugar un archivo

y como le indico que me copie el en la carpeta nueva??
  #7 (permalink)  
Antiguo 16/09/2011, 11:12
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Cambiar de lugar un archivo

si me lo elimino, pero como le indico que me ingrese el nuevo en la carpeta archivos(antigua), y el archivo interior en la carpeta Obsoletos(nueva) , osea me lo elimine de la carpeta antigua y me lo ingrese en la carpeta nueva,

EJEMPLO:
yo subo por primera ves un documento xxx.pdf de version 6, ese se me guardaria en la carpeta archivos(antigua), y cuando vuelva a ingresar ese documento xxx.pdf de version 7, entonces que ya en la carpeta archivos(antigua) ahora este xxx.pdf de version 7, y en la carpeta Obsoletos(nueva) xxx.pdf de version 6, eso es lo que quiero lograr.

Gracias!!!
  #8 (permalink)  
Antiguo 16/09/2011, 14:54
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: Cambiar de lugar un archivo

Se puede utilizar la función 'file_exists()' con la cual se comprueba la existencia de un archivo. Entonces antes de guardar el archivo nuevo se verifica si existe una versión anterior de este, de ser asi se copia el archivo existente en la carpeta 'obsoletos' y despues se guarda el archivo nuevo en la carpeta 'archivos'. El código es algo asi:

Código PHP:
Ver original
  1. $destino= "archivos";
  2. $antiguo= "obsoletos";
  3.  
  4. // Se realiza un if indicando que si el tamano del documento que se suba es menor a 500, copie el archivo en la carpeta de destino
  5.       if($tamano < 500){
  6.  
  7.          if(file_exists($destino.'/'.$_FILES['archivo']['name'])) {
  8.          copy($destino.'/'.$_FILES['archivo']['name'], $antiguo.'/'.$_FILES['archivo']['name']);
  9.          copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']);
  10.          }else{
  11.          copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']);
  12.          }
  13.          
  14.          require("Conexion.php");
  15.        
  16.          //Recibes el arreglo con los valores del checkbox
  17.           $val_chk= $_REQUEST['Area'];
  18.  
  19.           //Recorres el arreglo
  20.           foreach ($val_chk as $val ){
  21.  
  22.           //Consulta que me realiza una insercion en la base de datos, en la tabla area_documento
  23.           $consultica = "insert into `area_documento` (`Cod.Doc`,`Cod.Area`) values ('{$Codigo}','{$val}')";
  24.          
  25.           mysql_query($consultica, $Conexion) or die ( mysql_error());
  26.  
  27.           }
  28.           //Consulta que me realiza una insercion en la tabla datos, con los valores que se ingresen en los campos del formulario
  29.           $sql = "insert into `datos` (`Codigo`,`Nombre`,`Version`,`Adjunto`) values('{$Codigo}','{$Nombre}','{$Version}','{$_FILES['archivo']['name']}')";
  30.          
  31.           mysql_query($sql, $Conexion) or die ( mysql_error());
  32.        
  33.          echo '<center><b><h3>Se insertaron los datos correctamente</a></h3></b></center>';
  34.        
  35.          echo '<center><b><h3><a href=CargarDocumento.php> Regresar </a></h3></b></center>';
  36.  
  37.       }else {
  38.  
  39.          echo ("El tamaño es superior al permitido");
  40.  
  41.        }
  #9 (permalink)  
Antiguo 16/09/2011, 15:40
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Cambiar de lugar un archivo

Gracias!!! por tu ayuda!!!

Etiquetas: lugar, mysql, sql, tabla, formulario, variables
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 22:21.