Hello, I've made some tests, and I think I will change the documentation, as we can have the same code in classic JVM, or GAE/servlet contexts: In this sample code, we just send back the content of the "fileToUpload" item.
@Post public Representation accept(Representation entity) throws Exception { Representation result = null; if (entity != null) { if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) { // 1/ Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1000240); // 2/ Create a new file upload handler based on the Restlet // FileUpload extension that will parse Restlet requests and // generates FileItems. RestletFileUpload upload = new RestletFileUpload(factory); // 3/ Request is parsed by the handler which generates a // list of FileItems FileItemIterator fileIterator = upload.getItemIterator(entity); // Process only the uploaded item called "fileToUpload" // an return back boolean found = false; while (fileIterator.hasNext() && !found) { FileItemStream fi = fileIterator.next(); if (fi.getFieldName().equals("fileToUpload")) { found = true; // consume the stream immediately, otherwise the stream // will be closed. StringBuilder sb = new StringBuilder("media type: "); sb.append(fi.getContentType()).append("\n"); sb.append("file name : "); sb.append(fi.getName()).append("\n"); BufferedReader br = new BufferedReader( new InputStreamReader(fi.openStream())); String line = null; while ((line = br.readLine()) != null) { sb.append(line); } sb.append("\n"); result = new StringRepresentation(sb.toString(), MediaType.TEXT_PLAIN); } } } else { // POST request with no entity. setStatus(Status.CLIENT_ERROR_BAD_REQUEST); } } return result; } Having said that, I think I will change the implementation of the "RestletFileUpload#parseRequest" method in order to rely on the underlying servlet, and remove the "RestletFileUpload#parseRepresentation" method. Thanks a lot. 2015-01-16 11:41 GMT+01:00 Xybrek <xyb...@gmail.com>: > On Friday, 16 January, 2015 05:51 PM, Thierry Boileau wrote: > > Hello, > > I guess you are refering to this page of the user guide: > > > http://restlet.com/technical-resources/restlet-framework/guide/2.3/extensions/fileupload > > > > The code is exactly the same for the GAE edition, except that you cannot > write File directly as is it forbidden by the GAE platform. > > > > You can still have access to the FileItem#getInputStream() method. > > > > > > Best regards, > > Thierry Boileau > > > > ------------------------------------------------------ > > > http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3094350 > > > > Theierry, > > I am not sure but it seems the sample you gave throws error and we > cannot use the repackaged apache package with Restlet. > > So I improvised, I manage to upload large files with Restlet and GAE > with this code: > > @Override > public void upload(Representation entity) throws Exception { > if (entity != null) { > if > (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) { > Request restletRequest = getRequest(); > HttpServletRequest servletRequest = > ServletUtils.getRequest(restletRequest); > ServletFileUpload upload = new ServletFileUpload(); > FileItemIterator fileIterator = > upload.getItemIterator(servletRequest); > while (fileIterator.hasNext()) { > FileItemStream item = fileIterator.next(); > String name = item.getName(); > byte[] content = > ByteStreams.toByteArray(item.openStream()); > // do stuff with content > } > } else { > setStatus(Status.CLIENT_ERROR_BAD_REQUEST); > } > } else { > setStatus(Status.CLIENT_ERROR_BAD_REQUEST); > } > } > > Perhaps you can share this with Restlet documentation so community would > benefit to this code. Or perhaps you can see some issues with the code. > > ------------------------------------------------------ > > http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3094355 > -- *Thierry Boileau, Mr B* +1 (408) 387-3184 • tboil...@restlet.com <http://restlet.com/> 6 Rue Rose Dieng-Kuntz • Nantes, 44300 • France ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3094370