Disabling the AttachFile action

The AttachFile action lets a page have multiple attached files.

Since file uploads could be abused for DoS (Denial of Service) attacks, AttachFile is an action that can be disabled by the wiki administrator. See Configuration of MoinMoin for details.

Creating attachments

To create a new attachment, you can either add an attachment link to any page (see below on how to do that), or click on the AttachFile link at the bottom of the page. In the first case, you will see an Upload new attachment link after saving the page. Clicking on it will lead you to the upload page, just like directly clicking on the AttachFile link.

The upload form consist of two fields. In addition to the file input there is an optional field (Rename to), used to give the file a different name than on your own computer.

Existing attachments may be viewed, downloaded, or removed, depending on the configuration of the wiki and the access rights of the user. For example, an attachment cannot be deleted if the user doesn't have the delete permission on the particular page.

Any upload or deletion of attachments is reflected on RecentChanges and thus subject to peer review. Unlike page changes, there is no history though, so keep a local copy of files so you can revert possible vandalism.

Listing and information about attachments

Two macros are defined which give information about attachments on a page. The <<AttachInfo>> macro gives a short sentence about any attachments:

There are 10 attachment(s) stored for this page.

The <<AttachList>> macro lists files attached to a page:

  • [get | view] (2023-03-04 01:36:22, 7.4 KB) [[attachment:move_example1.png]]
  • [get | view] (2023-03-04 01:36:22, 4.8 KB) [[attachment:move_example2.png]]
  • [get | view] (2023-03-04 01:36:22, 3.7 KB) [[attachment:unzip1.png]]
  • [get | view] (2023-03-04 01:36:22, 6.6 KB) [[attachment:unzip2.png]]
  • [get | view] (2023-03-04 01:36:22, 3.1 KB) [[attachment:unzip3a.png]]
  • [get | view] (2023-03-04 01:36:22, 13.4 KB) [[attachment:unzip3b.png]]
  • [get | view] (2023-03-04 01:36:22, 5.5 KB) [[attachment:unzip5.png]]
  • [get | view] (2023-03-04 01:36:22, 4.0 KB) [[attachment:unzip6.png]]
  • [get | view] (2023-03-04 01:36:22, 5.3 KB) [[attachment:unzip6b.png]]
  • [get | view] (2023-03-04 01:36:22, 3.2 KB) [[attachment:unzip7.png]]
 All files | Selected Files: delete move to page copy to page

It has two optional parameters:

Linking to attachments

To refer to attachments on a page, use [[attachment:a file with blanks.txt]].

Do not use the URL of the [get] link you can see on the attachments upload page, since these links are subject to change and can break easily on reconfiguration of the wiki. To refer to files attached to other pages, use [[attachment:WikiName/filename.ext]].

Embedding of attachments

If you like to transclude/inline/embed the target, use the {{attachment:image.png}} syntax. When using transclusion, some target file types might get pretty rendering (e.g. syntax highlighting), depending on the support moin has for that mimetype.

Editing vector drawings

An embedding looking like {{drawing:picturename}} will allow you to interactively edit vector diagrams via the built-in Java applet. The applet will then store three attachments, "picturename.draw", "picturename.png" and "picturename.map". After you first saved a drawing, the generated PNG picture is displayed for the {{drawing:picturename}} markup. The MAP is used to activate parts of the image as links. This means that you only need Java enabled for editing, while displaying the results works with any browser.

To edit a drawing after the first save, click on AttachFile and use the [edit] link that is displayed instead of [view] for the .draw attachment. You can also click on the invisible 5 pixel border around the picture to reach the edit mode. Saving a drawing is reflected in RecentChanges.

For details on using the drawing applet, see Plugins/TWikiDrawPlugin.

Installing packages

See HelpOnPackageInstaller.

Unzipping files

To get access to the unzip feature you need the following rights on the page:

e.g.

#acl UserName:admin,read,write,delete All:read

We implemented some protection for the server against abuse of this feature. Zip files in a Zip file are dropped by unzipping them. By definition of the configuration option unzip_attachments_space, only this total amount of bytes can be used to unzip files. If there are already files in the directory, the amount of them are subtracted from this number. The size of a single file in the archive which will be extracted can be limited using the configuration option unzip_single_file_size. By unzip_attachments_count you could restrict the number of files which are extracted from the zip file.

The rules for unzipping are implemented in the same way as for uploading one file. It is not allowed to overwrite an existing file by unzipping a file.

By unzipping a zip file only files from the first layer are unzipped. Files in directories are ignored.

A valid zip file could be created this way:

zip example.zip *.jpg

Uploading a zip file

After you have uploaded a zip file, you can see the unzip link.

No rights to unzip

If you have not enough rights, you only see the usual dialogue.

Not enough free space free

If the resulting unpacked files exceed the limit of filespace for attachments, you get this warning.

Successfully unzipped

unzip3a.png
unzip3b.png

Extracted files would be too large

If a file in the archive exceeds the defined unzip_single_file_size then it is not unzipped.

zip files in zip file will be ignored

If zip files are included in the zip archive, they will be skipped during the extraction. Regular files included will be extracted.

So the famous 42.zip does not affect the system.

move a file

A "move" action link will be shown for each attachment file if you have "delete" rights on the wiki page it is attached to.

move_example1.png

Just click on "move" to get to this dialogue:

move_example2.png

Now you can either just rename the file (keeping it attached to the current page) or move the file to a different page (and even rename it, if you like). You need "write" rights on the target page (and the target page must be an already existing page).