<html> <form action="/upload" method="POST" enctype="multipart/form-data"> <input type="file" name="blah"/> <input type="submit" name="action" value="Upload"/> </form> </html>
the hook the /upload URL to a flow function
<map:match pattern="/upload"> <map:call function="upload"/> </map:match>
<map:match pattern="/*.html"> <map:read src="{1}.html"/> </map:match>
then write the flow function
var role = Packages.org.mystuff.UploadManager.ROLE;
function upload() { var uploader = cocoon.componentManager.getComponent(role); var part = cocoon.request.get("blah"); var success = uploader.handle(part.getInputStream()); if (success) { sendPage("success.html"); } else { sendPage("failure.html"); } }
alternatively, you can write the following java code in your sitemap components
import org.apache.cocoon.servlet.multipart.*;
...
Request request = ObjectModelHelper.getRequest(obj); if (request instanceof MultipartHttpServletRequest) { Part part = (Part) request.get("blah"); if (part != null) { // do something with it } else { // parameter not found } } else { // upload is disabled }
Hope this helps (and gets thru)
-- Stefano.