Pular para o conteúdo principal

Upload de imagem sem problema

Para quem não deseja ter problemas com importação de figuras que não são figuras, execute os procedimentos em php abaixo antes de salvar a imagem.

$erro = $config = array();

// Prepara a variável do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 106883;

// Largura máxima (pixels)
$config["largura"] = 350;

// Altura máxima (pixels)
$config["altura"] = 180;

// 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 . "
";
}

}

// 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 = "fotos/" . $imagem_nome;

// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $imagem_dir);

echo "Sua foto foi enviada com sucesso!";
}
}
?>

Segue lista completa dos mime types:

* ==>> application/octet-stream

asf ==>> video/x-ms-asf

asp ==>> text/asp

asr ==>> video/x-ms-asf

asx ==>> application/x-mplayer2

asx ==>> video/x-ms-asf

asx ==>> video/x-ms-asf

au ==>> audio/basic

avi ==>> video/x-msvideo

bas ==>> text/plain

bin ==>> application/octet-stream

bmp ==>> image/bmp

c ==>> text/plain

class ==>> application/java

class ==>> application/java-byte-code

class ==>> application/octet-stream

class ==>> application/x-java-class

css ==>> text/css

dms ==>> application/octet-stream

doc ==>> application/msword

dot ==>> application/msword

exe ==>> application/octet-stream

flr ==>> x-world/x-vrml

gif ==>> image/gif

gz ==>> application/x-gzip

h ==>> text/plain

hlp ==>> application/winhlp

hta ==>> application/hta

htc ==>> text/x-component

htm ==>> text/html

html ==>> text/html

ico ==>> image/x-icon

jpe ==>> image/jpeg

jpeg ==>> image/jpeg

jpg ==>> image/jpeg

js ==>> application/x-javascript

lha ==>> application/octet-stream

lsf ==>> video/x-la-asf

lsx ==>> video/x-la-asf

lzh ==>> application/octet-stream

m3u ==>> audio/x-mpegurl

mdb ==>> application/x-msaccess

mid ==>> audio/mid

mov ==>> video/quicktime

movie ==>> video/x-sgi-movie

mp2 ==>> video/mpeg

mp3 ==>> audio/mpeg

mpa ==>> video/mpeg

mpe ==>> video/mpeg

mpeg ==>> video/mpeg

mpg ==>> video/mpeg

mpv2 ==>> video/mpeg

pdf ==>> application/pdf

pot ==>> application/vnd.ms-powerpoint

pps ==>> application/vnd.ms-powerpoint

ppt ==>> application/vnd.ms-powerpoint

qt ==>> video/quicktime

ra ==>> audio/x-pn-realaudio

ram ==>> audio/x-pn-realaudio

rmi ==>> audio/mid

rtf ==>> application/rtf

rtx ==>> text/richtext

snd ==>> audio/basic

stm ==>> text/html

tar ==>> application/x-tar

txt ==>> text/plain

vrml ==>> x-world/x-vrml

wav ==>> audio/x-wav

wrl ==>> x-world/x-vrml

wrz ==>> x-world/x-vrml

xaf ==>> x-world/x-vrml

xla ==>> application/vnd.ms-excel

xlc ==>> application/vnd.ms-excel

xlm ==>> application/vnd.ms-excel

xls ==>> application/vnd.ms-excel

xlt ==>> application/vnd.ms-excel

xlw ==>> application/vnd.ms-excel

xml ==>> application/xml

xml ==>> text/xml

xof ==>> x-world/x-vrml

zip ==>> application/x-compressed

zip ==>> application/x-zip-compressed

zip ==>> application/zip

zip ==>> multipart/x-zip

Gostaria só de acrescentar para quem estiver interessado que para limitar os arquivos aos tipos .doc e .pdf, em vez de

if (!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {

deve-se utilizar o seguinte:

if (!eregi("^application\/(msword|pdf)$", $arquivo["type"])) {

Comentários

Postagens mais visitadas deste blog

Lista de órgãos emissores de RG

Para quem quiser normalizar os órgãos emissores de RG, aí vai uma lista retirada do site da FGV: SSP - Secretaria de Segurança Pública PM - Polícia Militar PC - Policia Civil CNT - Carteira Nacional de Habilitação DIC - Diretoria de Identificação Civil CTPS - Carteira de Trabaho e Previdência Social FGTS - Fundo de Garantia do Tempo de Serviço IFP - Instituto Félix Pacheco IPF - Instituto Pereira Faustino IML - Instituto Médico-Legal MTE - Ministério do Trabalho e Emprego MMA - Ministério da Marinha MAE - Ministério da Aeronáutica MEX - Ministério do Exército POF - Polícia Federal POM - Polícia Militar SES - Carteira de Estrangeiro SJS - Secretaria da Justiça e Segurança SJTS - Secretaria da Justiça do Trabalho e Segurança ZZZ - Outros (inclusive exterior)

Comparar dois números float em PHP

Para não passar raiva comparando dois números float com PHP nunca faça algo do tipo abaixo: $a = 0.1; $b = 0.2; if ($a + $b == 0.3) {     echo 'Igual'; } else {     echo 'Diferentes'; } Se fizer isso, vai ver que dá problema devido ao modo como o PHP guarda os valores float. Para resolver isso criei a função abaixo para comparar dois valores do tipo float. /** * Esta função recebe dois números como parâmetro.   * Se os números forem iguais, ou seja, se a diferença  * entre eles for menor que a margem de erro aceitável,   * a função retorna 0, caso contrário retorna -1 se o  * primeiro número for menor, * ou então 1 caso o segundo  * seja o menor   * @param float $a   * @param float $b   * @return 0 (igual), -1($num1 menor), 1($num2 menor)   */ function compara_float( $num1 , $num2 , $precisao = 5 ) {   $desprezar = pow ( 0.1 , $precisao );   $diff = abs ( $num1 - $...