This week's book giveaway is in the OCMJEA forum.
We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line!
See this thread for details.
The moose likes Java Micro Edition and the fly likes sending image to server using HTTP connection Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Mobile » Java Micro Edition
Bookmark "sending image to server using HTTP connection" Watch "sending image to server using HTTP connection" New topic
Author

sending image to server using HTTP connection

Greg Schwartz
Ranch Hand

Joined: May 11, 2003
Posts: 132
I'm using the Nokia Series 60 emulator and MMAPI to capture and image and send it to a server via HTTP.
Can this be done using HTTP POST or is there another way to get the image to a server via HTTP? If someone has done this before, could you send some sample code of what the HTTP connection properties look like and how the image bytes are sent through the output stream?
On the server side I am trying to use PHP to display the png image sent from the phone on a web page.
Any help is greatly appreciated!
Michael Yuan
author
Ranch Hand

Joined: Mar 07, 2002
Posts: 1427
Yes, you can. No special connection property is needed. I just write the entire byte array to the stream and then readFully() from the servlet. The server then saves it a local file with an appropriate extension (according to you capturing options). But I do not know to do it with PHP servers. If you know, please post back.
On the client side:

On the server side

[ March 21, 2004: Message edited by: Michael Yuan ]

Seam Framework: http://www.amazon.com/exec/obidos/ASIN/0137129394/mobileenterpr-20/
Ringful: http://www.ringful.com/
Greg Schwartz
Ranch Hand

Joined: May 11, 2003
Posts: 132
Thanks for your reply Michael. We originally tried using the code in your reply but this didn't seem to work with PHP. We just found that the following solution works when receiving the image with a PHP page.
client side:

PHP server side:


In the above example "bytes" is the name of the POST variable and the content-type must be "multipart/form-data". The "boundary" string is also needed for "multipart/form-data" transfers. The PHP code creates a file from the "bytes" POST variable called 'testDATE.png' where DATE is the time the file was created.
Regards,
Greg
Michael Yuan
author
Ranch Hand

Joined: Mar 07, 2002
Posts: 1427
Great. Thanks for the tip! When I think about it, you can use Base64 to encode byte arrays to ASCII strings on both ends of the communication as well.
cheers
Michael
leena bhegde
Greenhorn

Joined: Mar 15, 2009
Posts: 2


The third post given shows example that it is correct i tried the same example...but its not sending anything to server.
leena bhegde
Greenhorn

Joined: Mar 15, 2009
Posts: 2


The third post given shows example that it is correct i tried the same example...but its not sending anything to server.
Please reply as soon as possible
Manuja Jayamanne
Greenhorn

Joined: Jun 09, 2009
Posts: 2


This will help u..............

PHP code

<?php

$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name'])." has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}

?>

Java code

import java.io.OutputStream;
import java.io.InputStream;
import java.net.URLConnection;
import java.net.URL;
import java.net.Socket;

public class Main {

private final String CrLf = "\r\n";

public static void main(String[] args) {
Main main = new Main();
main.httpConn();
}


private void httpConn(){

URLConnection conn = null;
OutputStream os = null;
InputStream is = null;

try{
URL url = new URL("http://localhost/test/post.php");
System.out.println("url:" + url);
conn = url.openConnection();
conn.setDoOutput(true);

String postData = "";

InputStream imgIs = getClass().getResourceAsStream("/test.jpg");
byte []imgData = new byte[imgIs.available()];
imgIs.read(imgData);

String message1 = "";
message1 += "-----------------------------4664151417711" + CrLf;
message1 += "Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"test.jpg\"" + CrLf;
message1 += "Content-Type: image/jpeg" + CrLf;
message1 += CrLf;

// the image is sent between the messages in the multipart message.

String message2 = "";
message2 += CrLf + "-----------------------------4664151417711--" + CrLf;

conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=---------------------------4664151417711");
// might not need to specify the content-length when sending chunked data.
conn.setRequestProperty("Content-Length", String.valueOf((message1.length() + message2.length() + imgData.length)));

System.out.println("open os");
os = conn.getOutputStream();

System.out.println(message1);
os.write(message1.getBytes());

// SEND THE IMAGE
int index = 0;
int size = 1024;
do{
System.out.println("write:" + index);
if((index+size)>imgData.length){
size = imgData.length - index;
}
os.write(imgData, index, size);
index+=size;
}while(index<imgData.length);
System.out.println("written:" + index);

System.out.println(message2);
os.write(message2.getBytes());
os.flush();

System.out.println("open is");
is = conn.getInputStream();

char buff = 512;
int len;
byte []data = new byte[buff];
do{
System.out.println("READ");
len = is.read(data);

if(len > 0){
System.out.println(new String(data, 0, len));
}
}while(len>0);

System.out.println("DONE");

}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("Close connection");
try{
os.close();
}catch(Exception e){}
try{
is.close();
}catch(Exception e){}
try{

}catch(Exception e){}
}
}
}


Change the URL, image path and image name and try it .................

Peter Miklosko
Ranch Hand

Joined: May 26, 2009
Posts: 76
@Manuja Jayamanne - you just failed to mention you got this code from Sony Ericsson website
Manuja Jayamanne
Greenhorn

Joined: Jun 09, 2009
Posts: 2
Little bit delayed for reply.
Actually sorry for not mentioning the site. Anyway this code will help to lot of people
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: sending image to server using HTTP connection