Ninguém parece ter trabalhado com o que é e isso é muito ruim, então aqui está como eu lidei ...
Histórico / Histórico
Eu criei um uploader de SVG em 2015 com base em um artigo CSS-Tricks olhando para o que era. Eu também tenho grade trabalhando para visualização de imagem e usei algumas outras correções. Plugin simples (plugins de tipo de arquivo IMO devem ser simples)
Solução
Houve algumas alterações para 4,7. O verdadeiro PITA era que, para tipos image/
mime, o WP agora está usando o GD nas imagens. Para ignorar isso, defini a extensão svg
para usar application/svg+xml
, para que o GD não mexesse no arquivo.
Atualização: a partir de 4.7.2 alguma faísca brilhante quebrou isso também em alguns casos
Depois, mais tarde, por meio do hook, retornamos ao image/svg+xml
. É o mesmo usado em outras respostas, mas primeiro bloqueamos em nosso caso específico para eliminar efeitos (é um arquivo SVG); podemos confiar na leitura de $data['ext']
(deve ser mais barato que a função para obter informações de arquivo como apenas uma comparação e um acesso de matriz / hash).
Atualização: a partir de 4,7,2 $data['ext']
nem sempre é definida, por isso, agora, se o tamanho for << 1 extrair extensão (potencialmente insegura) do nome do arquivo usando
%código%. A razão pela qual estou realmente lutando usando o FileInfo é que confiar essencialmente em uma extensão PHP é muito opaco e nem sempre funciona para todos (especialmente aqueles que compilam sem ou sem acesso para habilitar extensões, se não estiverem lá). Eu gostaria de algo que funcione no lugar de uma extensão. Não é mais uma questão de ter as informações corretas, para quem confia na saída de strtolower(end(explode('.', $filename)))
e ter a extensão (acredito que seja padrão em 5.6+), isso deve funcionar. Também porque este é um plugin, ele não está modificando o núcleo, você pode desligar esse código ou cancelar o registro do gancho.
enlace
Veja
Outras soluções alternativas
Permitir uploads não filtrados é uma solução horrível, porque, como outros já disseram, linkar esse segmento pode fazer upload de arquivos php via media uploader (isso é ruim e, se você fizer isso, pare e pense!)
Forçando todo arquivo através de qualquer função sem checagens (Ironicamente, se você tem FileInfo
no tipo mime você não pode simplesmente ter uma simples verificação ext). Isso tem o potencial de criar efeitos de alcance muito mais amplos para resolver um problema de nicho relativamente e introduz mais trabalho em geral (ressaltar que meu plug-in também introduz mais trabalho para usuários administrativos para que a interface de administração de mídia funcione)
Se deixássemos o mime como application / svg + xml e simplesmente filtrássemos os tipos MIME que a imagem faria upload, mas o AFAIK exigiria que as correções fossem usadas como imagem em destaque etc. Há mais trabalho a ser feito para garantir a experiência universal do SVG então escolhi escolher batalhas com cuidado.
Espero que isso ajude.