PHP: Função para tratar nome de um arquivo na hora de fazer upload
Olá pessoal,
esta função pode ser muito útil na hora de fazer upload de arquivos.
Imagine que o arquivo a ser enviado tenha o seguinte nome Brazil.Brasília animação.jpg (com acentuação, cedilha e espaços); ao utilizar a função abaixo, o nome ficará assim: brazil-brasilia-animacao.jpg.
<? function tratar_arquivo_upload($string){ // pegando a extensao do arquivo $partes = explode(".", $string); $extensao = $partes[count($partes)-1]; // somente o nome do arquivo $nome = preg_replace('/\.[^.]*$/', '', $string); // removendo simbolos, acentos etc $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýýþÿŔŕ?'; $b = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuuyybyRr-'; $nome = strtr($nome, utf8_decode($a), $b); $nome = str_replace(".","-",$nome); $nome = preg_replace( "/[^0-9a-zA-Z\.]+/",'-',$nome); return utf8_decode(strtolower($nome.".".$extensao)); } $file = $_FILES['arquivo']; $filename = tratar_arquivo_upload(utf8_decode($file['name'])); ?> |
Só tive que mudar o $file[‘name’] para $_FILES[‘arquivo’][‘name’]
Obrigado!!
Claudinei, obrigado por participar do blog.
Abraços.
Parabéns pelo blog e muito boa função… saudações.
Também tive que fazer umas mudanças. Como minha pagina pega o nome do arquivo através de um , onde tinha acentuação aparecia uma interrogação, que sua função transformava em hífem.
Pra resolver tive que modificar a string $b para que a ‘?’ continuasse ‘?’ e acrescentar a linha:
$nome = str_replace(“?”,””,$nome);
Aí tudo funcionou “like a charm” rsrs.
Se vc tiver uma solução menos gambiarra eu aceito 🙂
Valeu pela função, ajudou muito.
Boa tarde amigo, poderia mandar uma função que renomeasse o arquivo na hora do upload, baseado em um padrão já estabelecido, Ex: [ID vindo do Banco]-foto.extensão
Fiz uma pequena alteração na função para te ajudar.
Olá amigo, muito bom seu script. Tive um pequeno problema e não encontrei a solução:
quando o nome do arquivo é “porão.jpg”, a o arquivo armazenado fica assim: “pora-o.jpg”. O ideal não seria “porao.jpg”?
Resolvi o problema. Era um utf8_encode a mais que já existia no tratamento de erros que eu havia criado.
Vida longa e próspera.
valeu. . .