upload.php
Este é o script responsável por fazer o upload propriamente dito. A função createthumbnail() será chamada aqui. Vamos ao código do script:
<?php
/*
-------------------------------------------+
| By Luís fred - fred.alphax@gmail.com
-------------------------------------------+
*/
$path = './';
$phpExt = substr(strrchr(__FILE__, '.'), 1);
include ($path . "settings." . $phpExt);
include ($path . "func_upload." . $phpExt);
$upload_tmp = (!empty($_FILES['img']['tmp_name'])) ? $_FILES['img']['tmp_name'] : '';
if (is_uploaded_file($upload_tmp))
{
$img_types = array(".gif", ".jpg", ".jpeg", ".JPG", ".JPEG", ".png");
$img = $_FILES['img'];
$img_name = strtolower(substr($img['name'], 0, strrpos($img['name'],".")));
$img_ext = strtolower(strrchr($img['name'], "."));
$img_tmp_dest = "./temp/";
if (!preg_match("/^[-0-9A-Z_\[\]]+$/i", $img_name)) {
echo ("A imagem deve ter um nome legível");
} elseif ($img['size'] > $settings['img_max_b']) {
echo ("a imagem deve ter tamanho menor/igual a " . $settings['img_max_b'] . 'bytes');
} elseif (!in_array($img_ext, $img_types))
{
echo("são aceitos os seguintes formatos de arquivos: \n");
for($i = 0; $i < count($img_types); $i++)
{
if(count($img_types[$i]))
{
echo($img_types[$i] . ",\n\t");
}
}
} else {
$img_file = image_exists($img_tmp_dest, $img_name . $img_ext);
move_uploaded_file($upload_tmp, $img_tmp_dest . $img_file);
chmod($img_tmp_dest . $img_file, 0644);
list($width, $height, $type) = @getimagesize($img_tmp_dest . $img_file);
//$imagefile = getimagesize($img_tmp_dest . $img_file);
if ($width > $settings['photo_max_w'] || $height > $settings['photo_max_h']) {
echo ("Imagem muito grande, submeta uma imagem com resolução de no máximo 800x600");
} else {
$photo_thumb1 = image_exists($img_tmp_dest, $img_name . "_t1" . $img_ext);
createthumbnail($type, $img_tmp_dest . $img_file, $img_tmp_dest . $photo_thumb1,
$settings['thumb_w'], $settings['thumb_h'], $settings['thumb_compression']);
copy($img_tmp_dest . $photo_thumb1, "./thumbnails/" . $photo_thumb1);
copy($img_tmp_dest . $img_file, "./large/" . $img_file);
unlink($img_tmp_dest . $photo_thumb1);
unlink($img_tmp_dest . $img_file);
echo ("<script>alert('upload realizado');location='index.html';</script>");
}
}
}
else
{
echo ("<script>alert('Erro no upload');location='index.html';</script>");
}
?>
Em seguida vem o código comentado:
<?php
/**
* @author Luís Fred
* @mail fred.alphax@gmail.com
*/
$path = './';
$phpExt = substr(strrchr(__FILE__, '.'), 1);
include ($path . "settings." . $phpExt);
include ($path . "fun_upload." . $phpExt);
$upload_tmp = (!empty($_FILES['img']['tmp_name'])) ? $_FILES['img']['tmp_name'] : '';
//Se o arquivo foi enviado ao servidor, serão feitas algumas checagens no arquivo
if (is_uploaded_file($upload_tmp))
{
//Armazena em um array, as extensões de arquivo que serão aceitas
$img_types = array(".gif", ".jpg", ".jpeg", ".JPG", ".JPEG", ".png");
//armazena na variável $img, o nome de upload do arquivo, que é img.
$img = $_FILES['img'];
/*pega o nome da imagem, pega tudo o que estiver antes do ponto ".",
*deixando a extensão de fora.
*/
$img_name = strtolower(substr($img['name'], 0, strrpos($img['name'],".")));
//pega somente a extensão do arquivo, tudo o que estiver depois do pnto
$img_ext = strtolower(strrchr($img['name'], "."));
//diretório temporário, onde a imagem ficará até ter o seu tamanho reduzido.
$img_tmp_dest = "./temp/";
//faz uma verificação no nome da imagem, que só poderá conter letras e números.
if (!preg_match("/^[-0-9A-Z_\[\]]+$/i", $img_name)) {
echo ("A imagem deve ter um nome legivel");
/*chega se o tamanho da imagem que está sendo usada no upload tem tamanho
*maior que o estabelecido previamente.
*/
} elseif ($img['size'] > $settings['img_max_b']) {
echo ("a imagem deve ter tamanho menor/igual a " . $settings['img_max_b'] . 'bytes');
/*E se o formato do arquivo que está sendo usado no upload não for um dos aceitos...*/
} elseif (!in_array($img_ext, $img_types))
{
echo("são aceitos os seguintes formatos de arquivos: \n");
for($i = 0; $i < count($img_types); $i++)
{
if(count($img_types[$i]))
{
echo($img_types[$i] . ",\n\t");
}
}
} else {
//captura a imagem que se encontra no diretório temporário que criamos.
$img_file = image_exists($img_tmp_dest, $img_name . $img_ext);
/*E então copia a imagem que está em $_FILES['img']['tmp_name'] para o nosso
*diretório temporário.
*/
move_uploaded_file($upload_tmp, $img_tmp_dest . $img_file);
/*Modifica as permissões de acesso ao arquivo.
* Escrita e leitura para o proprietário, somente leitura para todos os outros.
*/
chmod($img_tmp_dest . $img_file, 0644);
//pega a largura, a altura e o tipo de imagem que está sendo usada.
list($width, $height, $type) = @getimagesize($img_tmp_dest . $img_file);
/*Se preferir use assim:
$imagefile = getimagesize($img_tmp_dest . $img_file);
if ($imagefile[0] > $settings['photo_max_w'] || $imagefile[1] > $settings['photo_max_h']) {
echo ("Imagem muito grande, submeta uma imagem com resolução de no máximo 800x600");
}
$imagefile[0] = largura;
$imagefile[1] = altura;
$imagefile[2] = tipo;
*/
if ($width > $settings['img_max_w'] || $height > $settings['img_max_h']) {
} else {
//cria um nome diferente para a imagem menor
$img_thumb = image_exists($img_tmp_dest, $img_name . "_t1" . $img_ext);
/*Aqui é usada a função createthumbnail() que criamos anteriormente
*para gerar as imagens de tamanho menor.
*/
createthumbnail($type, $img_tmp_dest . $img_file, $img_tmp_dest . $img_thumb,
$settings['thumb_w'], $settings['thumb_h'], $settings['thumb_compression']);
/*copia a imagem, já redimensionada, para a pasta thumbnails*/
copy($img_tmp_dest . $img_thumb, "./thumbnails/" . $img_thumb);
/*copia a imagem de tamanho original para a pasta large*/
copy($img_tmp_dest . $img_file, "./large/" . $img_file);
/*apaga o conteúdo da pasta temporária que usamos durante todo o processo*/
unlink($img_tmp_dest . $img_thumb);
unlink($img_tmp_dest . $img_file);
echo ("<script>alert('upload realizado');location='index.html';</script>");
}
}
}
else
{
echo ("<script>alert('Erro no upload');location='index.html';</script>");
}
?>
Faça o download do código acima
aqui.