Aqui eu vou mostrar uma forma "simples" de se fazer Upload de imagens com o PHP.
Neste exemplo, nós vamos gerar um nome aleatório para a imagem.
Vamos ao formulário:
<form action="upload.php" method="post" enctype="multipart/form-data">
Selecione a imagem: <input name="photo" type="file" /><br />
<input name="submit" type="submit" value="Enviar" />
</form>
Agora o arquivo "upload.php":
#Inicio da função de validação e gravação de imagem
$erro = $config = array();
// Prepara a variável do arquivo
$arquivo = isset($_FILES["photo"]) ? $_FILES["photo"] : FALSE;
if($arquivo == ""){
echo "<p>Variavel de arquivo vazio</p>";}
else{echo "<p>Variavel de arquivo OK!</p>";}
// Tamanho máximo do arquivo 50Kb - 110px x 110px(em bytes)
$config["tamanho"] = 102400;
// Largura máxima (pixels)
$config["largura"] = 500;
// Altura máxima (pixels)
$config["altura"] = 800;
// Formulário postado... executa as ações
if($arquivo)
{
// Verifica se o mime-type do arquivo é de imagem
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
{
$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}
else
{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem não deve
ultrapassar " . $config["largura"] . " pixels";
}
// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem não deve
ultrapassar " . $config["altura"] . " pixels";
}
}
// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";
}
echo "Erro no Upload da imgem - Reveja o tamanho e a largura";
}
// Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem ficará
$imagem_dir = "upload/" . $imagem_nome;
// Faz o upload da imagem
if(!move_uploaded_file($arquivo["tmp_name"], $imagem_dir)){
}
}
}
Duvidas? Deixe um comentário.
Proximo post será sobre Upload de imagem usando o CodeIgniter.
Esse recurso de upload de imagens no codeigniter é que na minha opinião precisa melhorado e muito. Se você usar a função Ajax da lib JQuery e enviar os dados via post o codeigniter simplesmente não pega o dado enviado no campo type=file, não sei porque, já tentei 1001 vezes, nada funcionou, agora se eu usar a função submit da lib Jquery ai ele consegue pegar o arquivo. Gostaria de saber se já conseguiu fazer o upload de uma imagem usando a função ajax do JQuery.
ResponderExcluir