Submissions/RFC 2388 monster beaten by FormData – Uploading to Wikimedia Commons using JavaScript and The Pronunciation Recording Gadget

From Wikimania 2014 • London, United Kingdom

After careful consideration, the Programme Committee has decided not to accept the below submission at this time. Thank you to the author(s) for participating in the Wikimania 2014 programme submission, we hope to still see you at Wikimania this August.

Submission no. 5040
Title of the submission
RFC 2388 monster beaten by FormData – Uploading to Wikimedia Commons using JavaScript and The Pronunciation Recording Gadget
Type of submission (discussion, hot seat, panel, presentation, tutorial, workshop)
presentation, tutorial
Author of the submission
Rainer Rillke, Rahul Maliakkal
E-mail address
Country of origin
Germany, India
Affiliation, if any (organisation, company etc.)
Personal homepage or blog


The goal of this talk is giving technically interested people a basic foundation about the underlying processes that happen during upload without requiring them to know about a specific programming language, and to help technically advanced users getting the upload right. At the end, I'd like to work out — with the help of the audience — where else we could use client-side uploading of dynamically created as well as static content from the hard drive and I will show some cool user scripts that already make use of this feature and how they could be improved or otherwise used.


Writing code for uploading files to the central media repository, Wikimedia Commons, has been always challenging, not only because it is entirely different from other means of wiki-editing and there is a broad range of possible errors the upload interface could throw but also due to the inconvenient, dissimilar format used for uploading: While most edits committed through the API are URL-encoded, this is not suitable for uploading where one has to rely on multipart messages. The talk will

  • walk through the parts of a multi-part message and the required request headers,
  • explore the hard way, hacking the message together and finally .sendAsBinary() the XMLHttpRequest in Mozilla Firefox,
  • show the JavaScript FormData API for uploading files conveniently,
  • discuss JavaScript client-side uploading and best implementation practises,
  • warn about the trouble-spots preventing a successful upload,
    • including common API errors,
  • cover debugging-techniques and
  • finally present the Pronunciation Recording Gadget as an example utilizing the FormData API for uploading dynamically created audio files.

Alignment to Wikimedia's mission

Multimedia files, including photos, audio recordings and videos are a crucial part of the modern society facilitating learning by other means than text; it is even possible for illiterate people to understand videos and photos. Often, media files are primary sources, not interpreted by other humans before, allowing individuals to form their personal opinion. That's why I believe the step towards providing these media files, uploading them to Wikimedia Commons, requires much careful consideration as a key technology and educting interested parties about how to achieve perfect uploads is important and in line with the Wikimedia mission statement.

  • Technology, Interface & Infrastructure
Length of session (if other than 30 minutes, specify how long)
30 minutes
Will you attend Wikimania if your submission is not accepted?
Rillke: Yes
Slides or further information (optional)
C.f. m:Grants:IEG/Finish Pronunciation Recording
Special requests

Interested attendees

If you are interested in attending this session, please sign with your username below. This will help reviewers to decide which sessions are of high interest. Sign with a hash and four tildes. (# ~~~~).

  1. the wub "?!" 23:44, 13 April 2014 (UTC)[reply]
  2. .js (talk) 18:11, 23 July 2014 (UTC)[reply]
  3. Add your username here.