J'ai un extrait dans mon fichier PHP de fonctions qui me permet de télécharger des fichiers SVG. Depuis la mise à niveau vers la dernière version de WP aujourd'hui, je ne peux plus télécharger de svgs. J'ai également essayé un deuxième extrait de code du site Web des astuces CSS et cela ne fonctionne pas non plus.
Est-ce que quelqu'un sait a) ce qui a pu causer cela avec la dernière mise à jour et b) Quelqu'un connaît-il une solution?
Voici le code que j'utilise normalement:
function svg_mime_types( $mimes ) {
mimes['svg'] = 'image/svg+xml';
return $mimes;}
add_filter( 'upload_mimes', 'svg_mime_types' );
Merci beaucoup
Paul.
define( 'ALLOW_UNFILTERED_UPLOADS', true );
àwp-config.php
. Ce n'est pas sûr pour la production.'svg' === strtolower($filetype['ext']);
et n'introduise plus de travail dans le cas où aucun travail n'est nécessaire (principalement) ou si le fichier n'est pas de type svg ...Il semble que cela puisse être lié à ce ticket https://core.trac.wordpress.org/ticket/39552 , ressemble à quelque chose qui s'est cassé en 4.7.1
la source
Personne ne semble avoir simplement travaillé avec ce qui est et c'est dommage alors voici comment j'ai géré ...
Histoire / Contexte
J'ai créé un uploader SVG en 2015 basé sur un article CSS-Tricks regardant ce qui était. J'ai également fait fonctionner la grille pour la prévisualisation d'image et j'ai utilisé quelques autres correctifs. Plugin simple (les plugins de type fichier IMO doivent être simples)
Solution
Il y a eu quelques changements pour 4.7. Le vrai PITA était que pour les
image/
types MIME, WP utilise maintenant GD sur les images. Pour contourner cela, j'ai défini l'svg
extension à utiliserapplication/svg+xml
pour que GD ne joue pas avec le fichier.Mise à jour: à partir de 4.7.2, une étincelle brillante s'est également déclenchée dans certains cas
Puis, plus tard, via un crochet, nous le réinscrivons à chaud
image/svg+xml
. C'est la même chose utilisée dans d'autres réponses, mais nous le verrons d'abord dans notre cas spécifique pour éliminer les effets (est-ce un fichier SVG); nous pouvons compter sur la lecture$data['ext']
(devrait être moins cher que la fonction pour obtenir des informations sur les fichiers comme une seule comparaison et un accès tableau / hachage).Mise à jour: à partir de 4.7.2
$data['ext']
n'est pas toujours définie, nous allons donc maintenant si sa longueur est <1 extraire (potentiellement dangereux) l'extension du nom de fichier en utilisantstrtolower(end(explode('.', $filename)))
. La raison pour laquelle je me bats vraiment en utilisant FileInfo est que s'appuyer essentiellement sur une extension PHP est trop opaque et ne fonctionnera pas toujours pour tout le monde (en particulier pas ceux qui compilent sans ou sans accès pour activer les extensions s'il n'y en a pas). J'aimerais quelque chose qui fonctionne au lieu d'une extension. Il ne s'agit plus d'avoir les informations correctes, donc pour ceux qui font confiance à la sortie deFileInfo
et ayant l'extension (je pense que c'est la valeur par défaut en 5.6+), cela devrait fonctionner. De plus, comme il s'agit d'un plugin, il ne modifie pas le noyau, vous pouvez désactiver ce code ou désinscrire le hook.https://github.com/Lewiscowles1986/WordPressSVGPlugin
Voir
Autres solutions de contournement
Autoriser les téléchargements non filtrés est une solution horrible car, comme d'autres l'ont dit, un lien vers ce fil de discussion pourrait permettre aux gens de télécharger des fichiers php via le téléchargement de médias (c'est mauvais et si vous le faites, vous devriez vous arrêter et réfléchir!)
Forcer chaque fichier à travers n'importe quelle fonction sans vérification (Ironiquement, si vous avez
image/
dans le type mime, vous ne pouvez pas simplement avoir une simple vérification d'ext). Cela a le potentiel de créer des effets d'une portée beaucoup plus large pour résoudre un problème relativement de niche et introduit plus de travail dans l'ensemble (avertir mon plugin introduit également plus de travail pour les utilisateurs administrateurs pour que l'interface utilisateur des médias d'administration fonctionne)Si nous quittions le mime en tant qu'application / svg + xml et filtrions simplement les types de mime que l'image téléchargerait, mais AFAIK exigerait-il que des correctifs soient utilisés comme image en vedette, etc. Il y a plus de travail à faire pour assurer une expérience SVG universelle, alors j'ai choisi pour choisir les batailles avec soin.
J'espère que cela t'aides.
la source