Ninguém parece ter trabalhado com o que é e isso é muito ruim, então aqui está como eu lidei com ...
História / Histórico
Criei um uploader SVG em 2015 com base em um artigo CSS-Tricks, analisando o que era. Também tenho a grade trabalhando para a visualização da imagem e usei algumas outras correções. Plug-in simples (plug-ins do tipo arquivo IMO devem ser simples)
Solução
Houve algumas alterações na versão 4.7. O verdadeiro PITA era que, para os image/
tipos MIME, o WP agora usa GD nas imagens. Para contornar isso, defino a svg
extensão a ser usada application/svg+xml
para que o GD não mexa com o arquivo.
Atualização: a partir da versão 4.7.2, alguma faísca brilhante quebrou isso também em alguns casos
Depois, mais tarde, através do gancho, conectamos novamente image/svg+xml
. É o mesmo usado em outras respostas, mas em primeiro lugar, bloqueamos o nosso caso específico para eliminar efeitos (é um arquivo SVG); podemos confiar na leitura $data['ext']
(deve ser mais barato que a função para obter informações do arquivo, pois apenas uma comparação e um acesso a array / hash).
Atualização: a partir da versão 4.7.2 $data['ext']
nem sempre é definida, portanto, se o comprimento for <1, extrair (potencialmente insegura) a extensão do nome do arquivo usando
strtolower(end(explode('.', $filename)))
. A razão pela qual estou realmente lutando com o FileInfo é que depender essencialmente de uma extensão PHP é muito opaco e nem sempre funciona para todos (especialmente para aqueles que estão compilando sem ou sem acesso para habilitar extensões, se não houver). Eu gostaria de algo que funcione, em vez de uma extensão. Não é mais uma questão de ter as informações corretas; portanto, para aqueles que confiam na saída FileInfo
e na extensão (acredito que seja o padrão no 5.6+), ele deve funcionar. Também porque este é um plugin, não está modificando o núcleo. Você pode desativar esse código ou cancelar o registro do gancho.
https://github.com/Lewiscowles1986/WordPressSVGPlugin
Vejo
Outras soluções alternativas
Permitir uploads não filtrados é uma solução horrível, porque, como já foi dito, ao vincular esse tópico, as pessoas podem fazer upload de arquivos php via uploader de mídia (isso é ruim e, se você fizer, deve parar e pensar!)
Forçando todos os arquivos através de qualquer função sem verificações (ironicamente, se você possui image/
o tipo mime, não pode simplesmente ter uma simples verificação ext). Isso tem o potencial de criar efeitos de alcance muito mais amplo para resolver um problema relativamente de nicho e apresenta mais trabalho geral (ressalte meu plugin também introduz mais trabalho para os usuários administrativos, para que a UI da mídia administrativa funcione)
Se deixássemos o mime como application / svg + xml e filtrássemos os tipos de mime, a imagem seria carregada, mas o AFAIK exigiria que as correções fossem usadas como imagem em destaque etc. Há mais trabalho a ser feito para garantir uma experiência SVG universal, então eu escolhi para escolher batalhas com cuidado.
Espero que isto ajude.
define( 'ALLOW_UNFILTERED_UPLOADS', true );
awp-config.php
. Isso não é seguro para produção.