Boa tarde.
Tenho o seguinte problema.
Preciso antes de enviar um arquivo para upload (antes de grava-lo em diretório), pegar o seu tamanho e adiciona-lo em um totalizador. E dependendo do tamanho deste totalizador, que é a soma dos tamanhos dos arquivos no diretório + o novo arquivo enviado permitir ou não a gravação do arquivo.
O scriptcase possui alguma macro para isso?
Lembro que preciso unicamente pegar o tamanho do arquivo que esta no campo do scriptcase para adicionar seu tamanho à um totalizador fornecido por uma função minha que lê o diretório onde o novo arquivo vai ser gravado. É aí que estou agarrado, não consigo recuperar o tamanho do arquivo antes de sua gravação.
Já tentei usando a $_FILES no evento onbeforeInsert/onbeforeUpdate, mas esta me retorna um array vazio.
Alguém já resolveu este problema? Se sim me ajudem por favor.
Aguardo
somente na on|Validate ou onValidateSucess
Haroldo, boa tarde.
Não funcionou também nestes dois eventos. Tem outra dica para me ajudar?
O Arquivo só estará disponivels nesses eventos após upload e submeter o formulário.
Conforme a pasta do arquivo e se ele está realmente lá.
$filename = ‘/caminho/para/qualquer.txt’;
if (file_exists($filename)) {
echo “O arquivo $filename existe”;
} else {
echo “O arquivo $filename não existe”;
}
Haroldo, não sei se expliquei meu problema direito.
Preciso de capturar o tamanho do arquivo antes de sua gravação no diretório. Isso porque tenho um limitador de 5MB de arquivos por diretório. Sendo assim tenho a necessidade de capturar o tamanho do arquivo que estou para subir + a soma de todos os arquivos que já estão no diretório, e esta soma não pode ultrapassar 5MB. Se isso acontecer tenho de bloquear o upload do arquivo para que o diretório não ultrapasse a meta.
O que você está me dizendo é que com o SC não tem como fazer?
Sinto,mas pelo SC “acho” que não dá.
Tente usar um recurso manual para upload.
Haroldo, obrigado pela atenção, mas já temia que sua resposta seria esta.
Vou partir para o recurso manual mesmo. Mas fica aí a dica de implementação do recurso em uma próxima versão ou update.
Mais uma vez obrigado.
No SC ao enviar o arquivo, ele levanta ele numa pasta temporária com um nome que não da para prever, ao submeter o formulário que ele move para a pasta definitiva de documentos com o nome do arquivo.
O SC usa jquery e php pra upar o arquivo na primeira parte, se você inspecionar o codigo do sc talvez consiga ver o nome do das variáveis e consiga usar o $_FILE.
As vezes isso pode ajudar, tem o limite pro desenvolver setar o tamanho do limite do arquivo para upload no próprio formulário de controle,
pelo menos deste a V7.
// Tamanho máximo do arquivo (em Bytes)
Calculo_Tamanho = 1024 * 1024 * 5; // 5Mb
Em falar em material o da V8 esta muito bom, estou assistindo tudo aqui e relendo manual do inicio ao final.
Jailton, obrigado pela dica.
Eu já uso esta definição no ScriptCase e funciona legal, o problema que ela trabalha por arquivo, e eu tenho que controlar por diretório.
Mas de qualquer forma obrigado, e informo que desenvolvi a solução manualmente. se alguém um dia precisar é só solicitar.
Obrigado.
Hudson,
Caro parceiro de SC, se puder disponibilizar a rotina, seria uma mão na roda.
Tks.
Disponibiliza aqui no fórum…
Para pegar o tamanho do arquivo, utilize a função filesize no evento onAfterUpdate ou onAfterInsert (depois de inserir ou atualizar).
Ex: echo "SIZE ".filesize(“caminho-completo-do-arquivo/”.{campo-upload}) . ’ bytes’;
Você pode fazer uma validação ou um alguma implementação nesse caso. Lembrando que esse evento ocorre após realizar a atualização no bd. Então se for alguma validação, você deve exibir a mensagem de erro e também executar um update dos campos alterados, tipo voltando eles como era, e redirecionar para mesma aplicação.
Fiz o teste aqui e funcionou.