Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo PHP

02-03-2007 20:53

Esse script em PHP mostra o tamanho de um arquivo que já esteja em seu servidor.

<?php function tamanho($valor){ $i=0; $tipos = array("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"); while (($valor/1024)>1) { $valor=$valor/1024; $i++; } return substr($valor,0,strpos($valor,'.')+4).$tipos[$i]; } ?> <?php echo tamanho(filesize("arquivo.jpg")); ?>

1
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

18-07-2011 16:29

Estou tentando usar o código na validação de uma foto postada, inserido $Nome = $_FILES['foto']['name']; antes do mesmo; e trocando echo tamanho(filesize("arquivo.jpg")); por echo tamanho(filesize("$Nome"));, e está dando este erro: Warning: stat failed for balloon-aloft-3.bmp (errno=2 - No such file or directory) in... Está correta a utilização de $Nome? O erro estaria nisso?
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

18-07-2011 17:09

Acho que esse script de verificar o tamanho o arquivo já deve existir fisicamente no servidor. Você deve estar pegando o arquivo no meio do processo do upload.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

18-07-2011 23:50

Não entendi a primeira parte do que você disse.
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

19-07-2011 09:21

Para você obter o tamanho do arquivo com PHP, o arquivo deve estar em algum lugar, no caso uma pasta em seu servidor. Como você ainda está enviando o arquivo, ele ainda não está na pasta, por isso retorna o erro. Para obter o tamanho do arquivo, primeiro você tem que enviar para o servidor. Quando ele tiver na pasta, ai sim você pode obter o tamanho. Existe upload que usam Flash que é possível obter o tamanho do arquivo antes do upload propriamente dito.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

19-07-2011 12:13

Eu entendi. Mas se eu valido no PHP que a imagem não pode ser superior a tantos bytes, como no código abaixo, o sistema está verificando quantos bytes tem a imagem para dizer que seu tamanho é superior ao permitido (é isso?). Por quê eu não consigo reproduzir no PHP o tamanho da imagem em bytes que o sistema está identificando?
// Verifica se o tamanho da imagem é maior que o tamanho permitido if($foto["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes"; }

0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

19-07-2011 12:53

O que você pode estar fazendo é fazer o upload da imagem primeiro, após isso, verificar o tamanho no caminho que a imagem foi, se for maior que o especificado, avisa e deleta a imagem.
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

19-07-2011 13:15

Lembrei que tem aqui no fórum um script chamado Upload Total, dá uma testada nele
Upload-total_33_873.html
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

19-07-2011 15:46

Beleza. Vou testar o que você disse no seu penúltimo post e o código que refere no último. Obrigado.
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

19-07-2011 15:51

;)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

20-07-2011 01:45

Encontrei um código que estava informando o tamanho do arquivo após o upload; fiz uma validação antes do upload, e o tamanho do arquivo continua sendo informado quando o mesmo é superior ao permitido. Peguei o código de um post no site do PHP (http://php.net/manual/en/features.file-upload.php). Fiz algumas alterações (comparem-se os códigos original e o de minha adaptação): entendo que possui 1 MB o arquivo superior a 1048575 bytes e não superior a 999999 bytes; que 1 MB é igual a 1048576 bytes e não igual a 1000000 bytes; que 1 KB é igual a 1024 bytes, e não igual a 1000 bytes. Fiz testes, e foi informado o seguinte: numa pasta, há um arquivo com 16,4 KB; o código mostra 16.5 KB. Um arquivo com 8,58 KB é mostrado com 8.6 KB. Um arquivo com 233 KB é mostrado com 233.5 KB. Um arquivo com 1,24 MB é mostrado com 1.2 MB. Dê uma olhada, por favor. Há uma pequena diferença, mas me parece que está correto.

Abaixo, minha adaptação:

Arquivo index.php:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="ufile" /> <input type="submit" value="Upload" /> </form>

arquivo upload.php:
<?php $SafeFile = $HTTP_POST_FILES['ufile']['name']; $uploaddir = "uploads/"; //observação: crie a pasta uploads $path = $uploaddir.$SafeFile; if($ufile != none){ //AS LONG AS A FILE WAS SELECTED... $Size = $HTTP_POST_FILES['ufile']['size']; //10 KB é igual a 10240 bytes if($Size > 10240){ if ($Size>1048575){ //IF GREATER THAN 999KB, DISPLAY AS MB $theDiv = $Size / 1048576; $Size = round($theDiv, 1)." MB"; //round($WhatToRound, $DecimalPlaces) echo "<font color=\"red\">Arquivo $SafeFile muito grande:&nbsp;"; echo $Size; echo "!<br></font>"; echo "<a href=\"index.php\">Postar outra imagem</a>"; } else { //OTHERWISE DISPLAY AS KB $theDiv = $Size / 1024; $Size = round($theDiv, 1)." KB"; //round($WhatToRound, $DecimalPlaces) echo "<font color=\"red\">Arquivo $SafeFile muito grande:&nbsp;"; echo $Size; echo "!<br></font>"; echo "<a href=\"index.php\">Postar outra imagem</a>"; } }else{ if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path)){ //IF IT HAS BEEN COPIED... //GET FILE NAME $theFileName = $HTTP_POST_FILES['ufile']['name']; //GET FILE SIZE $theFileSize = $HTTP_POST_FILES['ufile']['size']; if ($theFileSize>1048575){ //IF GREATER THAN 999KB, DISPLAY AS MB $theDiv = $theFileSize / 1048576; $theFileSize = round($theDiv, 1)." MB"; //round($WhatToRound, $DecimalPlaces) echo "<font color=\"green\">Arquivo $SafeFile enviado:&nbsp;"; echo $theFileSize; ; echo "!<br></font>"; echo "<a href=\"index.php\">Postar outra imagem</a>"; } else { //OTHERWISE DISPLAY AS KB $theDiv = $theFileSize / 1024; $theFileSize = round($theDiv, 1)." KB"; //round($WhatToRound, $DecimalPlaces) echo "<font color=\"green\">Arquivo $SafeFile enviado:&nbsp;"; echo $theFileSize; ; echo "!<br></font>"; echo "<a href=\"index.php\">Postar outra imagem</a>"; } } } } ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

20-07-2011 09:41

Eu já fiz testes com arquivos como esse que tentam calcular o tamanho do arquivo, e já observei realmente essa diferença no tamanho do arquivo.

Quanto ao script está com alguns valores errado, por exemplo

$HTTP_POST_FILES['ufile']['name'] deve ser $_FILES['ufile']['name']
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

20-07-2011 09:49

Eu ia perguntar sobre $HTTP_POST_FILES, mesmo. Apesar da diferença que aparece, pretendo usar o código, pois ela me parece muito pequena. O que você acha?
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

20-07-2011 09:59

Parece viável sim, só que tem alguns erros que tem que ser reparado. Relacionado a $_FILES
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

20-07-2011 10:14

Troquei $HTTP_POST_FILES por $_FILES e está ok. Você pode indicar o que deve ser reparado?
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

20-07-2011 10:33

Aqui tinha mostrado o erro do $_FILES e do copy, que não tinha identificado o arquivo por causa do $_FILES. Se já funcionou ai então está ok.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

21-07-2011 00:30

Aquela diferença que referi entre o tamanho do arquivo que está na pasta e o tamanho exibido pelo código (que você referiu haver notado noutros códigos) é um arredondamento de casas decimais (http://php.net/manual/en/function.round.php):

<?php echo round(3.4); // 3 echo round(3.5); // 4 echo round(3.6); // 4 echo round(3.6, 0); // 4 echo round(1.95583, 2); // 1.96 echo round(1241757, -3); // 1242000 echo round(5.045, 2); // 5.05 echo round(5.055, 2); // 5.06 ?>

Creio que o código esteja funcionando a contento, a não ser peos erros referentes a $_FILES, que você mencionou, e que não sei identificar.
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mostrar o tamanho do arquivo

21-07-2011 09:06

É só trocar os

$HTTP_POST_FILES

por

$_FILES
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

Mostrar o tamanho do arquivo

21-07-2011 22:11

Ok.
0

Quem está online

Usuários navegando neste fórum: Google [Bot]