Hello Bjorn,

from what I see, you are following the right way (see
http://www.restlet.org/documentation/2.1/jse/ext/org/restlet/ext/fileupload/RestletFileUpload.html#getItemIterator%28org.restlet.representation.Representation%29
)

Best regards,
Thierry Boileau
ps : there could be another way using the FormDataSet class taken from the
org.restlet.ext.html extension. But there's something I miss about the aim
of this class. I check with Jérôme.

Hey all,
>
> I'm trying to create an endpoint on my server where users can post one or
> more large files. These files will then be processes and pushed to S3. For
> testing purposes, I am not processing and pushing to S3 yet, just
> calculating an sha1 hash and printing it to std out. The code below works,
> but I couldn't figure out how to do this without accessing classes called
> "FileItemStream" and, more ominously, "DiskFileItemFactory", so I wanted to
> make sure this code doesn't actually try to write the files to disk. I want
> the input stream to be pulling the data straight from the client. I don't
> see another way to do this.
>
> I am using org.restlet.ext.fileupload
>
> thanks!
>
>     @Post("multipart")
>     public Representation postFiles(Representation entity) {
>         if( entity == null ) {
>                 return fail( Status.CLIENT_ERROR_BAD_REQUEST,
> "Multipart/form-data required" );
>         }
>         if( ! MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(),
> true) ) {
>                 return fail( Status.CLIENT_ERROR_BAD_REQUEST,
> "Multipart/form-data required" );
>         }
>         DiskFileItemFactory factory = new DiskFileItemFactory();
>         RestletFileUpload upload = new RestletFileUpload(factory);
>         try {
>                         FileItemIterator fii =
> upload.getItemIterator(entity);
>                         while( fii.hasNext() ) {
>                                 MessageDigest md =
> MessageDigest.getInstance("SHA-1");
>                                 FileItemStream fis = fii.next();
>                                 InputStream is = fis.openStream();
>
>                                 while( true ) {
>                                         byte[] input = new byte[1024];
>                                         int amount = is.read(input);
>                                         if( amount == -1 )
>                                                 break;
>                                         md.update(input, 0, amount);
>                                 }
>                                 is.close();
>
>                                 byte[] sha1hash = md.digest();
>                                 System.out.println( fis.getFieldName() + "
> : " + fis.getName() + " : " + byteArray2Hex(sha1hash) );
>                         }
>                 } catch (FileUploadException e) {
>                         // TODO Auto-generated catch block
>                         e.printStackTrace();
>                 } catch (IOException e) {
>                         // TODO Auto-generated catch block
>                         e.printStackTrace();
>                 } catch (NoSuchAlgorithmException e) {
>                         // TODO Auto-generated catch block
>                         e.printStackTrace();
>                 }
>         ....
>
> -----------------------------
> Bjorn Roche
> http://www.xonami.com
> Audio Collaboration
> http://blog.bjornroche.com
>
> ------------------------------------------------------
>
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3016298
>

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3018550

Reply via email to