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!
como eu modelaria um objeto para upload...
Responder comentárioqueria 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!
já consegui. :)
e também já consegui colocar o modulo Mime Magic...
mas não funciona direito.
valeo!
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
Responder comentárioestou 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....
Responder comentárioGostaria 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!
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?
Responder comentárioE para quem utiliuza alguma versão do PHP 4, como fazer para que o script funcione, sem a função scandir()
Responder comentárioA 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.
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
<strong>Legal pra caramba!</strong><br>
<i>Parabéns!</i>
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;
}
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.
Responder comentárioOs textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
Júlio César Martini atualmente presta serviços de WebMaster/Programador para o UOL (http://www.uol.com.br), Graduado em Tecnólogo em Informática pela UNIFIAN - Faculdades Anhanguera e Pós-Graduado em Desenvolvimento de Software para Web pela UFSCAR. Foi o primeiro profissional a chegar à marca de 100 artigos publicados no iMasters e trabalha com PHP desde 2000. Site: http://www.juliocesarmartini.com
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.