[appengine-java] Re: No bytes available in doPost

2011-11-01 Thread Rune Nielsen
Hi Dick,

Your suggestions did the trick - thanks ever so much!

Sincerely,
Rune Nielsen

On Oct 27, 9:39 am, Dick Larsson  wrote:
> In method uploadAvatarImage you call for the inputStream before you
> have sent your bytes to the server.
> Please try this instead
> os.flush();
> os.close();
> InputStream is = servletConnection.getInputStream();
>
> Next thing, in your servlet.
> You should use InputStream instead of Reader since you are dealing
> with bytes
>
> InputStream reader = request.getInputStream();
> byte[] imageBytes =
> org.apache.commons.io.IOUtils.toByteArray(reader);
>
> Hope it helps
> Best regards
> /Dick Larsson
>
> On 24 Okt, 16:17, Rune Nielsen  wrote:
>
>
>
>
>
>
>
> > Hi,
>
> > I'm trying to upload an image to store in the Blobstore, but I'm having
> > trouble streaming it to my servlet as a byte array.
>
> > Here's the code for the client method streaming the byte array to the
> > servlet - it's using the Commons IO:
>
> > public void uploadAvatarImage(byte[] imageBytes) {
> >         try {
> >             URL myURL = new
> > URL("http://myapp.appspot.com/SetAvatar?globalId=1";);
> >             URLConnection servletConnection = myURL.openConnection();
>
> >             servletConnection.setRequestProperty("Content-Type",
> > "application/octet-stream");
>
> >             servletConnection.setDoOutput(true);
> >             servletConnection.setDoInput(true);
>
> >             OutputStream os = servletConnection.getOutputStream();
> >             InputStream is = servletConnection.getInputStream();
>
> >             IOUtils.write(imageBytes, os);
>
> >             os.flush();
> >             os.close();
>
> >             BufferedReader in = new BufferedReader(new
> > InputStreamReader(is));
> >             String inputLine;
>
> >             while ((inputLine = in.readLine()) != null) {
> >                 System.out.println(inputLine);
> >             }
>
> >             in.close();
> >         }
> >         catch (Exception e) {
> >             System.out.println(e);
> >         }
> >     }
>
> > Here's the code for the doPost method of my servlet:
>
> >     @Override
> >     public void doPost(HttpServletRequest request, HttpServletResponse
> > response) throws IOException, ServletException {
> >         BufferedReader reader = request.getReader();
> >         byte[] imageBytes = IOUtils.toByteArray(reader);
>
> >         PrintWriter outputWriter = response.getWriter();
>
> >         int len = ;
> >         outputWriter.println("Content type is: " + request.getContentType()
> > + " - length is: " + request.getContentLength());
> >         outputWriter.println("Bytes: " + imageBytes.length);
>
> >         outputWriter.close();
> >     }
>
> > The output from the servlet is:
>
> > Content type is: application/octet-stream - length is 0
> > Bytes: 0
>
> > Everything looks good on the client side and the size of the byte array on
> > the client size is about 300kb. But for some reason there's no available
> > bytes on the server side. Any ideas why? I've tried just about everything,
> > but to no avail.
>
> > Thanks in advance for any hints!
>
> > Sincerely,
> > Rune Nielsen

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] No bytes available in doPost

2011-10-26 Thread Rune Nielsen
Hi,

I'm trying to upload an image to store in the Blobstore, but I'm having 
trouble streaming it to my servlet as a byte array.

Here's the code for the client method streaming the byte array to the 
servlet - it's using the Commons IO:

public void uploadAvatarImage(byte[] imageBytes) {
try {
URL myURL = new 
URL("http://myapp.appspot.com/SetAvatar?globalId=1";);
URLConnection servletConnection = myURL.openConnection();

servletConnection.setRequestProperty("Content-Type", 
"application/octet-stream");

servletConnection.setDoOutput(true);
servletConnection.setDoInput(true);

OutputStream os = servletConnection.getOutputStream();
InputStream is = servletConnection.getInputStream();

IOUtils.write(imageBytes, os);

os.flush();
os.close();

BufferedReader in = new BufferedReader(new 
InputStreamReader(is));
String inputLine;

while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}

in.close();
}
catch (Exception e) {
System.out.println(e);
}
}

Here's the code for the doPost method of my servlet:

@Override
public void doPost(HttpServletRequest request, HttpServletResponse 
response) throws IOException, ServletException {
BufferedReader reader = request.getReader();
byte[] imageBytes = IOUtils.toByteArray(reader);

PrintWriter outputWriter = response.getWriter();

int len = ;
outputWriter.println("Content type is: " + request.getContentType() 
+ " - length is: " + request.getContentLength());
outputWriter.println("Bytes: " + imageBytes.length);

outputWriter.close();
}

The output from the servlet is:

Content type is: application/octet-stream - length is 0
Bytes: 0

Everything looks good on the client side and the size of the byte array on 
the client size is about 300kb. But for some reason there's no available 
bytes on the server side. Any ideas why? I've tried just about everything, 
but to no avail.

Thanks in advance for any hints!

Sincerely,
Rune Nielsen

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/GKmkwO4-_mwJ.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.