Hi everyone,
My application has an upload file feature and allow users to upload
image files to the server using an httpServlet. That part works fine,
the file gets uploaded and placed in the WEB-INF folder (I don't want
public access), required url and other info is filled into the
database using Hibernate.
The problem is when I want to retrieve the image on the client side.
My user pojo knows the url of its image, but I can't instantiate an
Image object and send it over an RPC call since it is not
serializable. I decided to transform the image file, a jpg, into a
byte[] on the server side and then transfer the byte[] over the RPC
call, however, I it doesn't work.
I get no errors on the server side, the RPC call returns, but my
client reports a failure:
SEVERE: Exception while dispatching incoming RPC call
java.lang.RuntimeException: java.lang.ClassCastException: [B cannot be
cast to [Ljava.lang.Object;
My service code:
public byte[] getImageByUrl(String url) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try{
File file = new File(url);
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(file);
}catch(Exception ioe){
ioe.getMessage();
}
return baos.toByteArray();
}
My client code:
service.getImageByUrl(url, new AsyncCallback<byte[]>() {
@Override
public void onFailure(Throwable arg0) {
log("getImageByUrl failed");
log(arg0.getMessage());
}
@Override
public void onSuccess(byte[] arg0) {
//reconstruct file
}
}
I send a byte[] and recieve a byte[], I checked the contents of the
array from the server side, it is not null and gets returned, however
the client side can not accept it... Why can this be ?
I have done some research and it seems like using an httpServlet is
better than using an RPC call when making a binary data transfer,
therefore I am inclined to using the httpServlet for downloading the
image, however what I ultimately achive is not having to save the file
on my client side to access its content. Is it possible to transfer
the Image object over the httpServlet to dynamically use it as it is
recieved on the client side ?
I am not sure about using data://url s as they are not supported by
all browsers, but seems as the simplest solution.
Thank you for your opinions..
Regards,
Ahmet
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.