It's better when it's simple

User Tools

Site Tools


ArchiveUpload Plugin

Compatible with DokuWiki

2009-02-14, 2008-05-05, "Ponder Stibbons"

plugin Allows to extract an archive (.zip/.tgz/.tar/.tar.gz/.gz) on upload

Last updated on

This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.

Tagged with !discontinued, archive, upload

The current download has limitations

The original author's version does not work with the upgraded media manager. The Forked Update currently addresses this issue. If the new media manager is updated and then works with this plugin the fork will no longer be needed.

Additionally, there are issues with the TARLib module employed by this plugin. Consequently, in these cases it will unpack only zip files. — Myron Turner 2013/06/03 17:25

Not functional in current versions of media mananger. — Myron Turner 2016-08-26 11:26


This Plugin allows you to extract an archive directly on upload. It does all the mime-type and security checks DokuWiki normally does. Currently supported archive types are: .zip .tgz .tar .tar.gz .gz. Once installed, it adds another checkbox to the upload form which, when ticked, will cause the plugin to try to extract the uploaded file as an archive.


Install using the Extension Manager.


This plugin has no configuration options.


A complete changelog can be found here.

Bugs / Feature Requests

Please report bugs and feature requests at the bug tracker.


Ignoring Directories

I've made a slight modification to my version: giving the option for directories to be ignored. Essentially, the user might have zipped the files in the current directory, might have zipped them from the directory above… there is no way of knowing until the files have been uploaded, and then it's a bit of a pain to move them.

So, a few minor tweaks:-

1. Add this into handle_form_output in action.php (also requires you to change the lang files):-

$event->data->addElement(form_makeCheckboxField('ignoredirs', 0, $this->getLang('ignoredirs')));

2. Add the following to the lang/<your language>/lang.php:-

$lang['ignoredirs']         = 'Ignore archive directories';

3. Add the following into postProcessFiles, after the line $fn_new = str_replace(':', '/', cleanID($fn_new));:-

if ( isset( $_REQUEST['ignoredirs'] ) )
    $lastslash = strrpos( $fn_new, '/' );
    $fn_new = ( $lastslash !== false ) ? substr( $lastslash, $lastslash+1 ) : $fn_new;
    if ( $fn_new == '' )
        continue;    // This is a directory, and these are being ignored

In my limited testing, this makes sure that all the files in the archive are put in the same directory. – Andy Turner 2009-07-14 13:40


One thought that I've had - and I've not looked at whether this works or is feasible - I reckon that the MEDIA_UPLOAD_FINISH event should be fired for all of the uploaded files. For example, if I want to resize uploaded images to conform to a maximum size, I can't upload them by archive.

So, is it technically feasible to modify the action plugin to repeatedly fire MEDIA_UPLOAD_FINISH for each file uploaded? (Or am I talking nonsense and it does this already :-P) – Andy Turner 2009-07-14 13:42

plugin/archiveupload.txt · Last modified: 2020-09-02 00:40 by turnermm

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki