Fala galera!
Essa semana adicionaremos ao nosso sistema uma função que terá por finalidade retornar o tamanho e o tipo de imagem que estamos validando. Será usada a função GetImageSize().
Essa é uma alternativa já que, com a função ImagesX() e ImagesY(), obteremos o mesmo resultado, só que a função GetImageSize(), além do tamanho, nos traz o tipo do arquivo.
Resultado final:

Alterando a função VisImagens (arquivo: funcoes.php)
Abaixo é apresentado as linhas que foram acrescentadas ou alteradas na função. Para visualizar a função completa baixe o script que se encontra no fim desse artigo.
<? |
Screenshot:

Linha 107: Chamamos a função GetImageSize() que retornará os dados em forma de array a variável $tamanho.
Linha 110: Verificamos o tipo do arquivo (GIF, JPG etc..). Para verificar a lista completa acesse o site: http://br2.php.net/manual/pt_BR/function.getimagesize.php.
Imagens incluídas no artigo para testes
Baixando o script no link abaixo você econtra na pasta TEMP, 02 imagens para serem usadas em seus testes.
Na hora que o script pedir o diretório, informe esse, ok?
Para conferir toda a série sobre o Sistema de Imagens, clique nos links abaixo:
>> Sistema
de Imagens - Parte 01
>> Sistema
de Imagens - Parte 02
>> Sistema
de Imagens - Parte 03
>> Sistema
de Imagens - Parte 04
>> Sistema
de Imagens - Parte 05
Para baixar o script, clique no link abaixo.
DOWNLOAD |
Clique AQUI e faça o download do script. |
Semana que vem tem mais. Espero que vocês tenham gostado :-)
Não deixe de nos enviar críticas ou sugestões para o próximo assunto, afinal a coluna é de vocês.
Boa semana a todos!
Cássio Lacerda
como eu modelaria um objeto para upload...
Amauri Júnior
queria saber se você pode me ajudar a instalar o Apache, o PHP e o MySQL, porque não estou conseguindo, esta dando erro.
Qualquer coisa comunique-me se puder!
Amauri Júnior
já consegui. :)
e também já consegui colocar o modulo Mime Magic...
mas não funciona direito.
valeo!
Felipe Pereira
Parabéns Júlio César, esse artigo ficou exelente. Eu gostaria de fazer um pedido, um artigo ensinando a atualizar o php, da versão 4.x.x pra versão 5
Altair Hruba
estou tentando desenvolver uma galeria apartir do seu sistema de imagens lá tem como fazer pop-up clicando na imagen ele aparece a origianl mas no projeto final não tem e eu gostaria de saber como faço para criar o pop-up das imagens....
Renato Silva Medina
Gostaria de criar um fotolog e futuramente enviar imagens por e-mail. Como faco para enviar uma imagem do meu computador para uma pasta lá no diretório do meu site?
Aguardo retorno!
Vinicius Nassimbem
Porque você (Renato Menina) num clica no link referente às matérias sobre upload, ao invés de torrar os comentários com observações inúteis?
Emilio Mario Wieczorek
E para quem utiliuza alguma versão do PHP 4, como fazer para que o script funcione, sem a função scandir()
Jediael patricio
A Situação é a seguinte. Tenho um projeto que quer cadastrar documentos armazenando o arquivo, do tipo pdf e doc, num campo blob do banco oracle 9i. Mas além disso a proposta tem a intenção de recuperar esses documentos armazenados no banco e que estão em binário e apresentar para o usuario. Esta se usando php e oracle 9i.
Primeiro é feito um upload do arquivo para uma pasta no diretório c:temp
Abaixo mostro o cabeçalho usado....
Código:
>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii\n";>
<meta name="GENERATOR" content="Quanta Plus">
</head>
<form name='frm_files' method="POST" enctype="multipart/form-data" action="DocumentoInclui_db.php" >
<center>
<table border="0">
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=5 BGCOLOR=="#FFF0FF,">
<TR><TH COLSPAN=2> Cadastros de Documento </TH></TR>
</table>
<br>
<?
O código abaixo mostra o momento que o arquivo é passado e armazenado no C:/temp. onde $doc_name é o documento em questão
Código:
//RECEBE OS DADOS DO CAMPO $_FILES
//NOME TEMPORÁRIO NO SERVIDOR
$doc_temp = $HTTP_POST_FILES["Anexar"]["tmp_name"];
//NOME DO ARQUIVO NA MÁQUINA DO USUÁRIO
$doc_name = $HTTP_POST_FILES["Anexar"]["name"];
//TAMANHO DO ARQUIVO
$doc_size = $HTTP_POST_FILES["Anexar"]["size"];
//TIPO MIME DO ARQUIVO
$doc_type = $HTTP_POST_FILES["Anexar"]["type"];
//ENVIA O ARQUIVO PARA A PASTA
chmod('C:\temp\ ', 0777);
@move_uploaded_file ($doc_temp, "C:\\temp\ $doc_name");
Enviada: Qui Mar 17, 2005 12:17 am Assunto: Vamos Começar novamente
--------------------------------------------------------------------------------
A Situação é a seguinte. Tenho um projeto que quer cadastrar documentos armazenando o arquivo, do tipo pdf e doc, num campo blob do banco oracle 9i. Mas além disso a proposta tem a intenção de recuperar esses documentos armazenados no banco e que estão em binário e apresentar para o usuario. Esta se usando php e oracle 9i.
Primeiro é feito um upload do arquivo para uma pasta no diretório c:temp
Abaixo mostro o cabeçalho usado....
Código:
>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii\n";>
<meta name="GENERATOR" content="Quanta Plus">
</head>
<form name='frm_files' method="POST" enctype="multipart/form-data" action="DocumentoInclui_db.php" >
<center>
<table border="0">
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=5 BGCOLOR=="#FFF0FF,">
<TR><TH COLSPAN=2> Cadastros de Documento </TH></TR>
</table>
<br>
<?
O código abaixo mostra o momento que o arquivo é passado e armazenado no C:/temp. onde $doc_name é o documento em questão.
Código:
//RECEBE OS DADOS DO CAMPO $_FILES
//NOME TEMPORÁRIO NO SERVIDOR
$doc_temp = $HTTP_POST_FILES["Anexar"]["tmp_name"];
//NOME DO ARQUIVO NA MÁQUINA DO USUÁRIO
$doc_name = $HTTP_POST_FILES["Anexar"]["name"];
//TAMANHO DO ARQUIVO
$doc_size = $HTTP_POST_FILES["Anexar"]["size"];
//TIPO MIME DO ARQUIVO
$doc_type = $HTTP_POST_FILES["Anexar"]["type"];
//ENVIA O ARQUIVO PARA A PASTA
chmod('C:\temp\ ', 0777);
@move_uploaded_file ($doc_temp, "C:\\temp\ $doc_name");
Com o arquivo armazenado no diretório o procedimento criado no sql é usado para armazenar na tabela
Código:
$clob = OCINewDescriptor($db, OCI_D_LOB);
$stmt = OCIParse($db, "begin insert_doc_blob($cod_doc_arm,$cod_doc_arm,'TEMP',' $doc_name');end;");
OCIExecute($stmt, OCI_DEFAULT);
abaixo o procedimento criado no bd oracle9i e que armazena o arquivo na tabela
create or replace procedure insert_arq_lob ( Diretorio varchar2, arquivo varchar2) is
V_ARQUIVO bfile;
V_CAMPO_LOB blob;
V_TAM_ARQUIVO integer;
begin
V_ARQUIVO:=bfilename(Diretorio,Arquivo);
dbms_lob.fileopen ( V_ARQUIVO, dbms_lob.file_readonly );
V_TAM_ARQUIVO:=dbms_lob.getlength(V_ARQUIVO);
insert into docs values (arquivo,empty_blob)
returning doc into V_CAMPO_LOB;
dbms_lob.loadfromfile(V_CAMPO_LOB,V_ARQUIVO,V_TAM_ARQUIVO);
dbms_lob.fileclose(V_ARQUIVO);
commit;
end;
Agora o problema está na hora de retornar o arquivo do banco, como sei o sql não retorna o arquivo binário e não sei como tratar esso no php......... então aí esta o problema.
Eduardo Dias
Funcionou para alguém que possa me mandar o script melhorado ?
como desde o começo meu servidor não funcionou eu sempre mando para o provedor para testar e sempre tenho conseguido fazer funcionar mas o sistema de imagens não funcionou ... obrigado
Rick - ser alguém tiver um outro sistema por favor me envie
Alexandre Silva
<strong>Legal pra caramba!</strong><br>
<i>Parabéns!</i>
Daniel Alcanja
segue aew a função pra kem usa versoes anteriores ao PHP5...
encontrei essa dica no site www.php.net
function scandir($dir = './', $sort = 0)
{
$dir_open = @ opendir($dir);
if (! $dir_open)
return false;
while (($dir_content = readdir($dir_open)) !== false)
$files[] = $dir_content;
if ($sort == 1)
rsort($files, SORT_STRING);
else
sort($files, SORT_STRING);
return $files;
}
Daniel Alcanja
o imasters blokeia o conteudo postado nos ocmentários ehehehe... a função pode ser vista em http://br2.php.net/manual/pt_BR/function.scandir.php nos comentários no fim da página.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.