Problem with GwtUpload on GAE

Posted by weesilmania on Stack Overflow See other posts from Stack Overflow or by weesilmania
Published on 2010-05-19T20:27:45Z Indexed on 2010/05/19 20:30 UTC
Read the original article Hit count: 298

Filed under:
|

I'm using GwtUpload to upload images on GAE. The problem is that the images seem to get much bigger when I move them into a blob. I've noticed the same for simple text fields and in that case I've realised that some weirdo characters are being appended to the end of the field values (encoding right?). Can anyone help?

public class ImageUploadServlet extends AppEngineUploadAction {

/**
 * Maintain a list with received files and their content types
 */
Hashtable<String, File> receivedFiles = new Hashtable<String, File>();
Hashtable<String, String> receivedContentTypes = new Hashtable<String, String>();

private Objectify objfy;

public ImageUploadServlet() {

    ObjectifyService.register(Thumbnail.class);
    objfy = ObjectifyService.begin();

    System.out.println("ImageUploadServlet init");
}

/**
 * Override executeAction to save the received files in a custom place and
 * delete this items from session.
 */
@Override
public String executeAction(HttpServletRequest request,
        List<FileItem> sessionFiles) throws UploadActionException {

    Thumbnail t = new Thumbnail();

    for (FileItem item : sessionFiles) {
        //CacheableFileItem item = (CacheableFileItem)fItem;

        if (false == item.isFormField()) {
            System.out.println("the name 1st:" + item.getFieldName());
            try {
                // You can also specify the temporary folder
                InputStream imgStream = item.getInputStream();
                Blob imageBlob = new Blob(IOUtils.toByteArray(imgStream));

                t.setMainImage(imageBlob);

                System.out.println("blob: " + t.getMainImage());

            } catch (Exception e) {
                throw new UploadActionException(e.getMessage());
            }

        } else {

            System.out.println("the name 2nd:" + item.getFieldName());

            String name = item.getFieldName();
            String value;
            try {
                InputStream is = item.getInputStream();

                StringWriter writer = new StringWriter();

                IOUtils.copy(is, writer,"UTF-8");

                value = writer.toString(); 
                writer.close();

                System.out.println("parm name: " + name);
                System.out.println("parm value: " + value + " **" + value.length());
                System.out.println(item.getContentType());

                if (name.equals("thumb-name")) {
                    t.setName(value);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                System.out.println("Error");
                e.printStackTrace();
            }
        }

        removeSessionFileItems(request);
    }

    objfy.put(t);

    return null;
}

As an example the size of the image is 20kb, and the lib has some debugging that confirms that this is the case when it's uploading the file but the blob ends up being over 1 MB.

Wes

© Stack Overflow or respective owner

Related posts about google-app-engine

Related posts about gwt