Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Takumi

Pré-definir e calcular espaço em diretório (Upload de Arquivos)

Recommended Posts

Galera gostaria de saber como faço para definir um espaço padrão para para uma pasta (exemplo 10gb) e ao ser guardados alguns arquivos fazer o calculo de espaço restante neste diretório.

 

Situação de exemplo:

 

Passo 1:

Diretório Home (nenhum arquivo) espaço restante 10gb

 

Passo 2:

Upload (Mortal Kombate X.exe)

Diretório Home (Mortal Kombate X.exe) espaço restante 2gb

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para definir um espaço padrão, nunca vi algo parecido, mas para calcular o arquivos dentro de um diretório e de forma recursiva, você pode usar as funções filesize e RecursiveIteratorIterator

 

Depois só efetuar os cálculos.

Ex.:

/**
 * Get the directory size
 * @param directory $directory
 * @return integer
 */
function dirSize($directory) {
    $size = 0;
    foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
        $size+=$file->getSize();
    }
    return $size;
} 

echo dirSize('name_directory');

Formatar

/**
 * Format a number into a human readable format
 * e.g. 24962496 => 23.81M
 * @param     $size
 * @param int $precision
 *
 * @return string
 */
function formatBytes($size, $precision = 2)
{
	if (!$size)
		return '0';
	$base = log($size) / log(1024);
	$suffixes = array('', 'k', 'M', 'G', 'T');

	return round(pow(1024, $base - floor($base)), $precision).$suffixes[floor($base)];
}

echo formatBytes( dirSize('name_directory') );

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem...

 

Vc pode vincular isso a uma conta. Pra upar alguma coisa, creio eu, uma pessoa deve ser cadastrada e nesse cadastro irá ter links para os arquivos que ela upou e aí, consequentemente, proceda para calcular a qtde de arquivos e seus tamanhos.

 

Espero ter ajudado.

 

Também poderá resolver isso via configuração do apache

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa parte de definir espaço no diretório fixo no diretório seria o mesmo feito pelas nuvens em geral disponibilizando certa capacidade de armazenamento para os usuários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa parte de definir espaço no diretório fixo no diretório seria o mesmo feito pelas nuvens em geral disponibilizando certa capacidade de armazenamento para os usuários.

Ai que você se engana, nenhum deles priva você por diretório, tenho várias videos aulas espalhadas por diversos storages, se você copiar um arquivo de 15GB, para uma conta free de 2,5GB, ou 150GB para um storage free, que permita somente 50GB, ambos aceitam na boa, o calculo é feito depois de armazenado, e não antes.

 

Se o diretório já conter arquivos que ultrapasse o limite minimo, é só efetuar os cálculos, como eu disse antes, e não permita cópias e uploads.

 

No caso, se é somente para uploads, vc controla isso no momento da execução via script.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Mkn
      Pessoal, eu estou com uma dúvida sobre como retirar o caminho do diretório do meu código fonte. Explicando melhor o meu problema: Eu estou fazendo uma página 99% concluída (em wordpress) onde tenho vídeo aulas que serão acessadas por assinantes regulares. Porém, ao acessar o código fonte o assinante tem acesso ao meu diretório, sendo assim podendo realizar o download do mesmo. Os vídeos estarão no Google Storage.
       
      O código gostaria que ficasse assim:
      data-sourcemp4="video/aulasobrepartitura.mp4"
       
      Ao invés de:
      data-sourcemp4="https://storage.googleapis.com/musiclive-com/assinantes/video/aulasobrepartitura.mp4"
       
      Fiz uma pesquisa na internet e vi que esse código no .htaccess protegeria esses objetos, porém não resolveu.
       
      RewriteCond %{HTTP_REFERER} !^https://www.meudominio.com.br$      [NC]
      RewriteCond %{HTTP_REFERER} !^$ 

      RewriteRule .*\.(jpg|jpeg|gif|png|bmp|mp4|mpeg|mpg|wma|mov|avi)$ - [F,NC]
       
      Obrigado desde já.
       
       
    • Por lucas_gabriel
      Olá, boa noite!
      Gostaria de saber como faço para bloquear o acesso direto a diretórios? Por exemplo tem vários arquivos dentro de um diretório, passo o link para o usuário acessar um arquivo especifico mas não quero que ele consiga entrar no diretório e liste todos os arquivos que tem lá. Como eu faria para realizar essa restrição?
    • Por Alex Dias
      Olá amigo, não sou usuário avançado, conseguir um código-fonte que lista arquivos de uma pasta no servidor, esses fontes listavam apenas os arquivos, daí eu dei uma incrementada nele para além dos arquivos ele listar também o tamanho do arquivo e a data da última modificação, segue ANEXO como ele está exibindo os resultados com perfeição.

      A minha dificuldade é que ele lista os arquivos da pasta por ordem alfabética de A a Z e eu gostaria muito que essa lista de arquivos fosse exibida por ordem de data de modificação decrescente, da mais atual para a mais antiga, e não estou conseguindo realizar essa tarefa, gostaria muito da ajuda dos amigos para solucionar esse ocorrido, desde já agradeço a ajuda de todos.

      Segue o código-fonte

       
      <?php //$diretorio = "D:\SERVIDOR-APACHE\PATRIMONIO TECNOLOGIA\images"; $diretorio = "/home/patrimonio/www/sites/default/files/ftpdata/download/Acesso Remoto"; //USADO PARA LISTAR OS ARQUIVOS DA PASTA $url = "sites/default/files/ftpdata/download/Acesso Remoto/"; // USADO PARA FAZER O LINK DE DOWNLOAD // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens; } // ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } } } // lista as pastas se houverem if ($pastas != "" ) { foreach($pastas as $listar){ print "";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ //CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB $tamanho = filesize("$url/$listar"); $kb = "1024"; $mb = "1048576"; $gb = "1073741824"; $tb = "1099511627776"; if($tamanho<$kb){ $tamanho_resposta = ($tamanho." bytes"); }else if($tamanho>=$kb&&$tamanho<$mb){ $kilo = number_format($tamanho/$kb,2); $tamanho_resposta = ($kilo." KB"); }else if($tamanho>=$mb&&$tamanho<$gb){ $mega = number_format($tamanho/$mb,2); $tamanho_resposta = ($mega." MB"); }else if($tamanho>=$gb&&$tamanho<$tb){ $giga = number_format($tamanho/$gb,2); $tamanho_resposta = ($giga." GB"); } // FIM CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB // DATA DA ULTIMA MODIFICACAO $modificado = date("d/m/Y H:i:s", filemtime("$url/$listar"))."<br>"; // FIM DATA DA ULTIMA MODIFICACAO //echo"$modificado"; // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO echo" <tr> <td width='438' height='30' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;<a href='$url/$listar' target='_blank'>$listar</a></font></p></td> <td width='192' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$tamanho_resposta</font></p></td> <td width='340' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$modificado</font></p></td> <td width='202' bgcolor='#ffffff'><p align='center'><a href='$url/$listar' target='_blank'><img src='images/nuvem.jpg'/></a></p></td> </tr> "; } } else { echo "<p><font color='#ff0000' size='3'>Não há nenhum arquivo.</font><p><br>"; } echo"</table>" ?>  

    • Por wanderleyalves
      Olá, estou começando a aprender o php e quero muito saber como busco um arquivo pdf em um diretório usando o login que e o cpf como texto para busca, ja fiz a tela de login, o formulario de busca  e o mostra resultado em php usando a função glob http://php.net/manual/pt_BR/function.glob.php, que encontra qualquer arquivo com o nome que escrever no campo busca, porem gostaria que ao logar já mostrasse o arquivo daquele usuário sem ter que buscar por ele, se o usuário buscar por 1, mostra todos os arquivos que contem 1 no nome.
       
      exemplo:
      Login do usuario 1 CPF:11111111111 senha ******
      Diretório: /arquivos/ 11111111111.pdf
       
      Login do usuario 2 CPF:22222222222 senha ******
      Diretório: /arquivos/22222222222.pdf
       
      mostra_busca.php
      <?php $arquivo = $_POST['arquivo']; $nome = "$arquivo"; $dir = 'cedulas/'; $arquivos_pattern = glob($dir . $nome . "*.*"); $i = 0; if($arquivos_pattern !== false) { foreach($arquivos_pattern as $arquivo) { echo "<a href=\"".$arquivo."\">" . basename($arquivo) . "</a><br />"; $i++; } echo $i > 0 ? "<br>" : NULL; } echo $nome_user; echo ", foram encontrados <strong>".$i."</strong> registros clique no link para imprimir"; ?>  
    • Por Nandolou
      Bom dia pessoal, alguém pode me ajudar ? (Sou iniciante KKK)
      Tenho uma página em HTML (index.htm) para upload de arquivos e imagens com o seguinte código:
      <form action="envia_foto.php" method="post" enctype="multipart/form-data">   <div align="center">        <p> </p>        <p>          <input type="file" name="Arquivo" id="Arquivo">          <br>             </p>        <p>          <input type="submit" value="Enviar">                            </p>    </div>  </form> ,........
      E tenho a página em PHP (envia_foto.php) com o seguinte código
      ........
      <html> <head> <title>Envia foto</title> </head> <body> <?php $nome_temporario=$_FILES["Arquivo"]["tmp_name"]; $nome_real=$_FILES["Arquivo"]["name"]; copy($nome_temporario,"up/$nome_real"); ?> <p align="center"><font size="7">Arquivo enviado com sucesso ! </font></p> </body> </html> A questão é a seguinte..
      Gostaria de inserir um campo na página HTML que tem os botões de selecionar e enviar, que eu possar inserir um número, e que o arquivo que a pessoa está enviando seja renomeado com esse numero, ficando por exemplo 123.jpg o que antes seria IMG_20181010_1530.jpg, e um outro campo de caixa de seleção onde eu coloque os caminhos que possa ser salvo, no caso as pastas com nomes.
      Caso possam me ajudar eu agradeço ... Esse código atual já está rodando só que salvando o nome original da imagem e em uma única pasta
      .....
      As imagens que anexei é de como está, de como desejo que esteja, e como comecei a a fazer o código mas não sei mesclar com o formulário atual 



×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.