[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] Re: No bytes available in doPost

2011-10-27 Thread Dick Larsson
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.