Upload Archives - Technik - Blogbasis.net https://technik.blogbasis.net/tag/upload Die Basis des freien Wissens – Technik Thu, 09 May 2013 09:35:40 +0000 de hourly 1 https://wordpress.org/?v=6.8.1 WordPress – Erlaubte Upload-Datentypen einstellen https://technik.blogbasis.net/wordpress-erlaubte-upload-datentypen-einstellen-08-05-2013 https://technik.blogbasis.net/wordpress-erlaubte-upload-datentypen-einstellen-08-05-2013#respond Wed, 08 May 2013 22:58:01 +0000 http://technik.blogbasis.net/?p=525 Unser TgZero hat vor einigen Tagen seinen Blogpost über das Anhängen von Daten an ausführe Dateien geschrieben. Den dazugehörigen Quelltext hat er in einem Archiv veröffentlicht. Das ist leider bei der Standardinstallation von WordPress nicht ohne weiteres möglich, denn die Datentypen für den Medienbereich sind beschränkt.

Es bedarf einem kleinen Eingriff in den Quellcode von WordPress, um eigene Dateitypen zu erlauben bzw. für den Upload freizuschalten.

Der Eingriff in den Quellcode

Die Änderungen werden wir in der „functions.php“ des jeweiligen Themes durchführen. Die Datei findet ihr entweder unter „/wp-content/themes/THEMENAME/functions.php“ oder über Design->Editor->Theme-Funktionen(functions.php).

Dort fügen wir zunächst die folgende Zeile hinzu:

add_filter( 'upload_mimes', 'edit_upload_mimes' );

Das wird später die von uns geschriebene „edit_upload_mimes“ Funktion aufrufen, wenn die Funktion „upload_mimes“ aufgerufen wird.

In der angesprochenen Funktion werden wir einfach die gewünschten, fehlenden Dateiendungen bzw. Mime-Types hinzufügen. Hier habe ich die gängigen Archive freigeschaltet:

function edit_upload_mimes($mimes) {
     $mime_types = array( 
        'pdf' => 'application/pdf',
        'tar' => 'application/x-tar',
         'zip' => 'application/zip',
        'gz|gzip' => 'application/x-gzip',
        'rar' => 'application/rar',
        '7z' => 'application/x-7z-compressed'
     );
    return array_merge($mime_types,$mimes);              
}

Wir erstellen ein neues Array, in dem wir unsere gewünschten Dateiendungen festlegen, und führen dieses mit den voreingestellten Dateitypen zusammen. Somit haben wir nun die Kontrolle über die zusätzlichen Dateitypen.

Die Änderungen müssen dann nur noch abgespeichert werden. Man sollte darauf achten, keine „kritischen“ Dateitypen (z.B. html/php/cgi/usw.) zu erlauben, denn ansonsten gefährdet man ggf. seine WordPress-Installation.

Die Auswahl

Die Auswahl an möglichen Dateitypen ist eigentlich unbegrenzt. Eine Übersicht möchte ich dennoch liefern, damit man sich die nötigen Einträge zusammenstellen kann:

    'jpg|jpeg|jpe' => 'image/jpeg',
    'gif' => 'image/gif',
    'png' => 'image/png',
    'bmp' => 'image/bmp',
    'tif|tiff' => 'image/tiff',
    'ico' => 'image/x-icon',
    // Video formats
    'asf|asx|wax|wmv|wmx' => 'video/asf',
    'avi' => 'video/avi',
    'divx' => 'video/divx',
    'flv' => 'video/x-flv',
    'mov|qt' => 'video/quicktime',
    'mpeg|mpg|mpe' => 'video/mpeg',
    'mp4|m4v' => 'video/mp4',
    'ogv' => 'video/ogg',
    'mkv' => 'video/x-matroska',
    // Text formats
    'txt|asc|c|cc|h' => 'text/plain',
    'csv' => 'text/csv',
    'tsv' => 'text/tab-separated-values',
    'ics' => 'text/calendar',
    'rtx' => 'text/richtext',
    'css' => 'text/css',
    'htm|html' => 'text/html',
    // Audio formats
    'mp3|m4a|m4b' => 'audio/mpeg',
    'ra|ram' => 'audio/x-realaudio',
    'wav' => 'audio/wav',
    'ogg|oga' => 'audio/ogg',
    'mid|midi' => 'audio/midi',
    'wma' => 'audio/wma',
    'mka' => 'audio/x-matroska',
    // Misc application formats
    'rtf' => 'application/rtf',
    'js' => 'application/javascript',
    'pdf' => 'application/pdf',
    'swf' => 'application/x-shockwave-flash',
    'class' => 'application/java',
    'tar' => 'application/x-tar',
    'zip' => 'application/zip',
    'gz|gzip' => 'application/x-gzip',
    'rar' => 'application/rar',
    '7z' => 'application/x-7z-compressed',
    'exe' => 'application/x-msdownload',
    // MS Office formats
    'doc' => 'application/msword',
    'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
    'wri' => 'application/vnd.ms-write',
    'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
    'mdb' => 'application/vnd.ms-access',
    'mpp' => 'application/vnd.ms-project',
    'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
    'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
    'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
    'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
    'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
    'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
    'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
    'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
    'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
    'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
    'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
    'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
    'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
    'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
    'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
    'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
    'sldm' => 'application/vnd.ms-powerpoint.slide.macroEnabled.12',
    'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote',
    // OpenOffice formats
    'odt' => 'application/vnd.oasis.opendocument.text',
    'odp' => 'application/vnd.oasis.opendocument.presentation',
    'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
    'odg' => 'application/vnd.oasis.opendocument.graphics',
    'odc' => 'application/vnd.oasis.opendocument.chart',
    'odb' => 'application/vnd.oasis.opendocument.database',
    'odf' => 'application/vnd.oasis.opendocument.formula',
    // WordPerfect formats
    'wp|wpd' => 'application/wordperfect',

Fazit

Ich finde es schade, dass WordPress keine Einstellungsmöglichkeit im Backend bietet (oder habe ich die nicht gefunden?), und man diese Einstellungen nur über quasi-direkte Eingriffe in den Quelltext treffen kann.

~ Sebastian

]]>
https://technik.blogbasis.net/wordpress-erlaubte-upload-datentypen-einstellen-08-05-2013/feed 0