Support » Allgemeine Fragen » Upload weiterer Dateitypen erlauben nicht möglich

  • Gelöst Anonymous User 20597857

    (@anonymized-20597857)


    Ja, 999x hier besprochen, dennoch komme ich nicht voran.
    Auf einer Testsite soll ein *.svg hochgeladen werden.

    Leider funktioniert keiner der früher immer korrekten (und hier oft gezeigten) Codes (z.B hier (natürlich auf *.svg angepasst) usw.) und dazu schafft es auch keines der hier auffindbaren Plugins.

    Es gibt in der völlig neuen Installation auch keinen Eintrag in der wp-config.php und noch kein Plugin, welches sich hier evtl. einmischen könnte.

    Ein paar Codes (die den Fehler „Du bist leider nicht berechtigt, diesen Dateityp hochzuladen.“ ergeben) :

    add_filter( 'upload_mimes', function() {
      $mimes = [ 'svg' => 'image/svg+xml' ];
      return $mimes;
    });

    Oder auch inkl. PDF:

    function add_custom_mime_types($mimes){
     $new_file_types = array (
     'svg' => 'image/svg+xml',
     'pdf' => 'application/pdf'
     );
     return array_merge($mimes,$new_file_types);
    }
    add_filter('upload_mimes','add_custom_mime_types');

    Welche Möglichkeiten gibt es noch?

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Hallo,
    teste mal bitte das folgende Plugin: https://de.wordpress.org/plugins/easy-svg/.

    Das Plugin setze ich auf einer WordPress-Instanz ein und das funktioniert auch nach Update auf WordPress 6.5

    Viele Grüße
    Hans-Gerd

    Bei mir funktioniert folgender Code in der functions.php

    /*----------------------------------------------------------------------------------------- */
    //* Restrict the upload of mime types
    /*----------------------------------------------------------------------------------------- */
    
    if ( ! function_exists( 'fb_restrict_mime_types' ) ) {
    
    	add_filter( 'upload_mimes', 'fb_restrict_mime_types' );
    
    	function fb_restrict_mime_types( $mime_types ) {
    	
    		$mime_types = array(
    			'pdf' => 'application/pdf',
    			'doc|docx' => 'application/msword',
    			'gif' => 'image/gif',
    			'jpg|jpeg' => 'image/jpeg',
    			'png' => 'image/png',
                'svg' => 'image/svg+xml',
    		);
    		
    		return $mime_types;
    	}
    }

    mime type von svg ist, wie du geschrieben hattest, richtig, so
    'svg' => 'image/svg+xml',

    aber ich denke, damit das funktionieren kann, muss die SVG-Datei solch einen Link enthalten: xmlns="http://www.w3.org/2000/svg"

    Wenn das alles nicht funktioniert, dann teste einmal diesen Eintrag für die .htaccess:
    AddType image/svg+xml .svg .svgz

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    Seit dem Einsatz eines Plugins (nein, nicht das hier oben vorgeschlagenen) geht leider gar nichts mehr, auch kein Upload von Standard-Dateitypen wie *.jpg, … (Gleiche Fehlermeldung wie bei üblicherweise unerlaubten Dateien)

    Daran konnte auch das Easy SVG Support Plugin und der neuen Codes (bzw. der .hta Eintrag) auch nicht. Denke, das eine Plugin hat auch nach der Deinstallation irgendwo was hinterlassen.

    Ja, die *.svg hat diesen Link (und noch einen ähnlichen mit /1999/) drin.

    Welches Plugin war das? Dann kann ich mal schauen.

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    Weiß ich leider nicht mehr, habe mehrere probiert.
    Nach jedem ist alles normal gelaufen, aber keines konnte *.svg Upload ermöglichen, obwohl alles, was damit zu tun hat, angehakt wurde.

    Nach dem letzten Versuch aus der Liste (irgendwas mit sehr vielen Installationen (50 oder 60 tsd)) ging dann gar nichts mehr.
    Fand auch keinen Hinweis, warum, es gibt keine Einträge in der wp-config, keine übriggebliebenen Dateien (was manche Cache-Plugins ja gerne hinterlassen). Kann nur in der DB, in den Standard-Tabellen sein.

    Werde das alles neu aufsetzen, ist eh nur ein Test.
    So wird man halt nie draufkommen, warum bestimmte Dateitypen, trotz aller Tricks nicht mehr funktionieren.

    Ich glaube ja, es gibt noch weitere, relativ unbekannte Tricks. Denn manche dieser Plugins zeigten Optionen, wonach man die „Typen Blockade von WP komplett außer Kraft setzen kann“. (Machte ich natürlich nicht!)
    Denke, die setzten auch bloß den Eintrag in die wp-config: define('ALLOW_UNFILTERED_UPLOADS', true);
    Und das habe ich testweise gemacht (die Site kennt eh keiner) – doch: Detto, kein Upload mehr möglich.
    Falls jetzt kommt: „da stimmt was mit den Rechten nicht“ Ne, die passen, auch testweise auf 777: Detto.

    Markiere das aber als gelöst, weil ich es nicht mehr weiterverfolgen kann.

    Danke an alle!

    Ich vermute das Problem liegt daran, dass dein Server den falschen Mime-Type für SVG-Dateien ausgibt. Anstatt image/svg+xml wird vielleicht text/plain zurückgegeben, weshalb alle obigen Codes nicht funktionieren.

    Um herauszufinden, welchen Mime Type dein Server für eine Datei zurückgibt, kann folgendes Plugin benutzt werden:
    https://de.wordpress.org/plugins/blob-mimes/

    Dann weißt du, wie genau du den Code bauen musst, damit es klappt.

    Das Ganze ist ein etwas komplexes Zusammenspiel zwischen dem Server (libmagic/fileinfo) und PHP. In früheren Versionen von PHP gab es auch mal einen Bug, der image/svg ausgab (den es gar nicht gibt).

    Bei letzterem hilft vielleicht schon ein Update der PHP-Version.

    Um die Serverkomponenten selbst zu aktualisieren, müsste der Hoster gefragt werden (sofern du keinen eigenen Root-Server besitzt, wovon ich mal nicht ausgehe …)

    Aber mit dem Wissen um den genauen Mime-Type, sollten die Snippets von oben recht gut anpassbar sein und dann sollte auch alles funktionieren.

    Ich setze dann gerne dieses gut gepflegte Plugin von der großen Agentur 10up:
    https://de.wordpress.org/plugins/safe-svg/

    Gruß, Torsten

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    Habe alles neu aufgesetzt und nun läuft der Upload von Standard-Dateien wieder.

    Um herauszufinden, welchen Mime Type dein Server für eine Datei zurückgibt,

    Also mit dem „Lord of the Files“ Plugin geht der Upload von *.svg – sobald man es deaktiviert, nicht mehr.

    Detto mit „Safe SVG“, geht der Upload, auch das Thumbnail ist da usw.

    Warum es nur mit beiden Plugins geht und sonst nie, weiß ich nicht.

    Leider kapiere ich es auch mittels des „Lord of the Files“ File Validators auch nicht, woran es ohne den nicht klappt – weil sobald der aktiv ist, gehts ja.
    Der sagt nur folgendes:

    VALIDATION:
      Naive Name: digitimehero.svg
      Naive Extension: svg
      Naive Type: image/svg+xml
      Magic Type: image/svg
      Best Type: image/svg+xml
    
    FINAL:
      Name: digitimehero.svg
      Extension: svg
      Type: image/svg+xml
      Code: 77
    

    Irgendwas stimmt auch mit den angezeigten Dateinamen auch nicht mehr …
    Den musste ich manuell eintragen, weil da kam vorhin eine komische Zeichenkombination anstatt des Dateinamens. Auch bei *.jpg. Denke, das kann auch mit dem Bildgenerator zusammenhängen … Dem gehe ich noch mal nach.

    • Diese Antwort wurde geändert vor 1 Monat, 3 Wochen von Anonymous User 20597857.
    • Diese Antwort wurde geändert vor 1 Monat, 3 Wochen von Anonymous User 20597857.
Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)