Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos!
Tenho um sistema de upload de fotos com php e mysql que uso a bastante tempo e funciona OK.
Input files enviam uma array de nomes de arquivos upados e o sistema copia-os (copy) dentro de um loop 'for'. No final, o path dos arquivos é gravado no banco.
O que acontece é que meus clientes costumam enviar fotos com nomes e acentos (como "Pôr do sol.jpg") pelo meu formulário, o que acaba gerando um erro quando a foto é exibida na página.
Pensei em resolver o problema de três formas:
1. Criar um alerta para avisar o cliente que a foto contém caracteres inválidos (espaços e acentos).
2. Renomear a foto dinamicamente (mas daí teria que criar um validador para nomes idênticos, daria mais trabalho..)
3. Tratar o encode na exibição da foto (o problema é que isto torna-se uma 'gambiarra'..=])
Tratando de fazer a primeira opção, tentei o seguinte:
if(strpos($arquivos[$contador]," ")){ die("A foto que quer enviar não deve conter espaços"); }
Logicamente tudo certo (creio eu).. O problema é que não consigo capturar o nome original do arquivo, pois $arquivos[$contador] está com o tmp name (algo como 'php38.tmp').
A minha dúvida é essa, como faço para capturar o nome original do arquivo para esta validação? Quando a foto é upada ( copy($arquivos[$contador],$path); ) o nome original é utilizado... Isso que está me deixando 'encucado'..
Se alguém tiver mais alguma sugestão, agradeço...
Abraços
Carregando comentários...