Foros del Web » Programando para Internet » PHP »

Limitar Tamaño de Carpeta ftp

Estas en el tema de Limitar Tamaño de Carpeta ftp en el foro de PHP en Foros del Web. Hola, estoy haciendo un uploader y para ello tengo el siguiente codigo: El problema es que me gustaria limitar el tamaño de la carpeta /files ...
  #1 (permalink)  
Antiguo 01/10/2007, 15:48
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 16 años, 7 meses
Puntos: 1
Exclamación Limitar Tamaño de Carpeta ftp

Hola, estoy haciendo un uploader y para ello tengo el siguiente codigo:
El problema es que me gustaria limitar el tamaño de la carpeta /files que esta en el servidor, y que le diga al usuario que la carpeta esta llena o que le quedan tantos Mb libres.
Lo otro, como es posible de la misma manera como subi los archivos borrarlos del ftp, probe con la funcion php unlink pero deben tener permiso de escritura, como lo hago?? Algun ejemplillo pls..


Código PHP:
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo"]['size'];
    
$tipo $_FILES["archivo"]['type'];
    
$archivo $_FILES["archivo"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    
    if (
$archivo != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$archivo;
        if (
copy($_FILES['archivo']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>PHP upload - unijimpe</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table width="369" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="369" height="40" class="titulo">Plataforma de Usuario</td>
  </tr>
  <tr>
    <td class="text">Por favor seleccione el archivo a subir:</td>
  </tr>
  <tr>
  <form action="upload.php" method="post" enctype="multipart/form-data">
    <td class="text">
      <input name="archivo" type="file" class="casilla" id="archivo" size="28" />
      <input name="enviar" type="submit" class="boton" id="enviar" value="Subir Archivo" />
      <input name="action" type="hidden" value="upload" />      </td>
    </form>
  </tr>
  <tr>
    <td class="text" style="color:#990000"><?php echo $status?></td>
  </tr>
  <tr>
    <td height="30" class="subtitulo">Listado de Archivos Subidos </td>
  </tr>
  <tr>
    <td class="infsub">
    <?php 
    
if ($gestor opendir('files')) {
        echo 
"<ul>";
        while (
false !== ($arch readdir($gestor))) {
           if (
$arch != "." && $arch != "..") {
               echo 
"<li><a href=\"files/".$arch."\" class=\"linkli\">".$arch."</a></li>\n";
           }
        }
        
closedir($gestor);
        echo 
"</ul>";
    }
    
?>    </td>
  </tr>
</table>
</body>
</html>
  #2 (permalink)  
Antiguo 01/10/2007, 18:45
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Limitar Tamaño de Carpeta ftp

Para calcular el tamaño de la carpeta podés usar una función foldersize como lo definen acá, le sumás el filesize que están subiendo y chequeas si excede el máximo o no.

Para borrar el archivo vas a necesitar permiso de escritura siempre... así funcionan los sistemas operativos... Lo que podés hacer es entrar con el programa FTP q usesy asignarle los permisos que quieras y darle permisos 0777 a la carpeta donde guardas los archivos para evitar que vuelva a suceder esto
  #3 (permalink)  
Antiguo 02/10/2007, 13:42
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Limitar Tamaño de Carpeta ftp

podrias explicarmelo un poquito mejor por favor, que soy medio novato en esto y no se como sumar el filesize que estoy subiendo a la funcion foldersize.
Saludos.
  #4 (permalink)  
Antiguo 02/10/2007, 16:00
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Limitar Tamaño de Carpeta ftp

Código PHP:
<?php 
function foldersize($path) {
    
$total_size 0;
    
$files scandir($path);

    foreach(
$files as $t) {
        if (
is_dir($t)) { // In case of folder
            
if ($t<>"." && $t<>"..") { // Exclude self and parent folder
                
$size foldersize($path "/" $t);
                
// print("Dir - $path/$t = $size<br>\n");
                
$total_size += $size;
            }
        }
        else { 
// In case of file
            
$size filesize($path "/" $t);
            
// print("File - $path/$t = $size<br>\n");
            
$total_size += $size;
        }   
    }
    return 
$total_size;
}
$status "";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo"]['size'];
    
$tipo $_FILES["archivo"]['type'];
    
$archivo $_FILES["archivo"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);

    if (
foldersize('files') + $tamano 1024 1024) {
        if (
$archivo != "") {
            
// guardamos el archivo a la carpeta files
            
$destino =  "files/".$archivo;
            if (
copy($_FILES['archivo']['tmp_name'],$destino)) {
                
$status "Archivo subido: <b>".$archivo."</b>";
            } else {
                
$status "Error al subir el archivo";
            }
        } else {
            
$status "Error al subir archivo";
        }
    } else {
        
$status "Tamaño máximo excedido";
    }
}
?>
  #5 (permalink)  
Antiguo 02/10/2007, 21:00
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Limitar Tamaño de Carpeta ftp

En el ejemplo que mencionas de que tamaño quedaria la carpeta? 2 * 1024 * 1024?? eso en Kb cuanto es??
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 13:51.