[gwtupload] Example of using new GAE libs

618 views
Skip to first unread message

wesn

unread,
May 19, 2010, 3:20:17 PM5/19/10
to gwtupload
Hello

Please could you include a code sample of how to use your new GAE
libraries. It would be the most rockingest if you could include a
multipart example too.

Wes

--
--
http://groups.google.com/group/gwtupload

dindeman

unread,
May 20, 2010, 11:58:54 AM5/20/10
to gwtupload
I recently started using Manuel's library to upload images onto the
GAE datastore.
Here is the way I extended the AppEngineUploadAction servlet to do so
(pay attention at replacing <you_package_name_here> with your own
servlet's package name):

package <your_package_name_here>;

import gwtupload.server.exceptions.UploadActionException;
import gwtupload.server.gae.AppEngineUploadAction;

import java.io.InputStream;
import java.util.List;

import javax.jdo.PersistenceManager;
import javax.jdo.Transaction;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.io.IOUtils;

import com.google.appengine.api.datastore.Blob;

public class DatastoreUploadAction extends AppEngineUploadAction {

@Override
public String executeAction(HttpServletRequest request,
List<FileItem> sessionFiles) throws UploadActionException {
String out = super.executeAction(request, sessionFiles);

for(FileItem imgItem : sessionFiles) {
PersistenceManager pm = ContentServiceImpl.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
// Start the transaction
tx.begin();

InputStream imgStream = imgItem.getInputStream();
Blob blob = new Blob(IOUtils.toByteArray(imgStream));
ImageBlob imageBlob = new ImageBlob(imgItem.getName(), blob);

pm.makePersistent(imageBlob);

// Commit the transaction, flushing the object to the datastore
tx.commit();
}
catch(Exception e) {
e.printStackTrace();
}
finally {
if(tx.isActive()) {
tx.rollback();
}
pm.close();
}
}
return out;
}
}

And of course don't forget to map the servlet in web.xml:

<servlet>
<servlet-name>uploadServlet</servlet-name>
<servlet-class><your_package_name_here>.DatastoreUploadAction</
servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>uploadServlet</servlet-name>
<url-pattern>*.gupld</url-pattern>
</servlet-mapping>

I hope this helps.
Luc
--
--
http://groups.google.com/group/gwtupload

Michael Witt

unread,
May 27, 2011, 9:48:44 PM5/27/11
to gwtu...@googlegroups.com
That was quite helpful ... thanks!

Juan Manuel Vicente

unread,
Apr 2, 2012, 8:33:46 PM4/2/12
to gwtu...@googlegroups.com
Can you attach ImageBlob code?

Thanks!
JM
Reply all
Reply to author
Forward
0 new messages