3

I have a server to upload file the server info is

<form action="FileUpload" method="post" enctype="multipart/form-data"> Select File <input type="file" name="file1"> <p> Select Filename <input type="text" size="20" name="filename"> <p> <input type=submit value="Upload"> </form> 

I am uploading file using below code

private boolean doFileUpload ( ) { boolean success = false ; HttpURLConnection conn = null ; DataOutputStream dos = null ; DataInputStream inStream = null ; String exsistingFileName = filePath ; String lineEnd = "\r\n" ; String twoHyphens = "--" ; String boundary = "*****" ; int bytesRead , bytesAvailable , bufferSize ; byte [ ] buffer ; int maxBufferSize = 1 * 1024 * 1024 ; String responseFromServer = "" ; String urlString = "http://paperify.net/tripmark/FileUpload" ; try { // ------------------ CLIENT REQUEST Log.e ( "MediaPlayer" , "Inside second Method" ) ; FileInputStream fileInputStream = new FileInputStream ( new File ( exsistingFileName ) ) ; // open a URL connection to the Servlet URL url = new URL ( urlString ) ; // Open a HTTP connection to the URL conn = ( HttpURLConnection ) url.openConnection ( ) ; // Allow Inputs conn.setDoInput ( true ) ; // Allow Outputs conn.setDoOutput ( true ) ; // Don't use a cached copy. conn.setUseCaches ( false ) ; // Use a post method. conn.setRequestMethod ( "POST" ) ; conn.setRequestProperty ( "Connection" , "Keep-Alive" ) ; conn.setRequestProperty ( "action" , "FileUpload" ) ; conn.setRequestProperty ( "file" , "myfile" ) ; conn.setRequestProperty ( "value" , "Upload" ) ; conn.setRequestProperty ( "Content-Type" , "multipart/form-data;boundary=" + boundary ) ; dos = new DataOutputStream ( conn.getOutputStream ( ) ) ; dos.writeBytes ( twoHyphens + boundary + lineEnd ) ; dos.writeBytes ( "Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + exsistingFileName + "\"" + lineEnd ) ; dos.writeBytes ( lineEnd ) ; Log.e ( "MediaPlayer" , "Headers are written" ) ; // create a buffer of maximum size bytesAvailable = fileInputStream.available ( ) ; bufferSize = Math.min ( bytesAvailable , maxBufferSize ) ; buffer = new byte [ bufferSize ] ; // read file and write it into form... bytesRead = fileInputStream.read ( buffer , 0 , bufferSize ) ; while ( bytesRead > 0 ) { dos.write ( buffer , 0 , bufferSize ) ; bytesAvailable = fileInputStream.available ( ) ; bufferSize = Math.min ( bytesAvailable , maxBufferSize ) ; bytesRead = fileInputStream.read ( buffer , 0 , bufferSize ) ; } // send multipart form data necesssary after file data... dos.writeBytes ( lineEnd ) ; dos.writeBytes ( twoHyphens + boundary + twoHyphens + lineEnd ) ; BufferedReader in = new BufferedReader ( new InputStreamReader ( conn.getInputStream ( ) ) ) ; String inputLine ; while ( ( inputLine = in.readLine ( ) ) != null ) Log.e ( "Res" , "" + inputLine ) ; // close streams Log.e ( "MediaPlayer" , "File is written" ) ; success = true ; fileInputStream.close ( ) ; dos.flush ( ) ; dos.close ( ) ; } catch ( MalformedURLException ex ) { Log.e ( "MediaPlayer" , "error: " + ex.getMessage ( ) , ex ) ; success = false ; } catch ( IOException ioe ) { Log.e ( "MediaPlayer" , "error: " + ioe.getMessage ( ) , ioe ) ; success = false ; } // ------------------ read the SERVER RESPONSE try { inStream = new DataInputStream ( conn.getInputStream ( ) ) ; String str ; while ( ( str = inStream.readLine ( ) ) != null ) { Log.e ( "MediaPlayer" , "Server Response" + str ) ; } inStream.close ( ) ; } catch ( IOException ioex ) { Log.e ( "MediaPlayer" , "error: " + ioex.getMessage ( ) , ioex ) ; } return success ; } 

It did not upload file but give exception below

12-16 01:04:37.031: E/MediaPlayer(24133): Headers are written 12-16 01:04:40.410: E/MediaPlayer(24133): error: http://paperify.net/tripmark/FileUpload 12-16 01:04:40.410: E/MediaPlayer(24133): java.io.FileNotFoundException: http://paperify.net/tripmark/FileUpload 12-16 01:04:40.410: E/MediaPlayer(24133): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521) 12-16 01:04:40.410: E/MediaPlayer(24133): at com.paperify.tripmark.UploadPicture.doFileUpload(UploadPicture.java:141) 12-16 01:04:40.410: E/MediaPlayer(24133): at com.paperify.tripmark.UploadPicture.doInBackground(UploadPicture.java:39) 12-16 01:04:40.410: E/MediaPlayer(24133): at com.paperify.tripmark.UploadPicture.doInBackground(UploadPicture.java:1) 12-16 01:04:40.410: E/MediaPlayer(24133): at android.os.AsyncTask$2.call(AsyncTask.java:185) 12-16 01:04:40.410: E/MediaPlayer(24133): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 12-16 01:04:40.410: E/MediaPlayer(24133): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 12-16 01:04:40.410: E/MediaPlayer(24133): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 12-16 01:04:40.410: E/MediaPlayer(24133): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 12-16 01:04:40.410: E/MediaPlayer(24133): at java.lang.Thread.run(Thread.java:1019) 12-16 01:04:40.437: E/MediaPlayer(24133): error: http://paperify.net/tripmark/FileUpload 12-16 01:04:40.437: E/MediaPlayer(24133): java.io.FileNotFoundException: http://paperify.net/tripmark/FileUpload 12-16 01:04:40.437: E/MediaPlayer(24133): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521) 12-16 01:04:40.437: E/MediaPlayer(24133): at com.paperify.tripmark.UploadPicture.doFileUpload(UploadPicture.java:167) 12-16 01:04:40.437: E/MediaPlayer(24133): at com.paperify.tripmark.UploadPicture.doInBackground(UploadPicture.java:39) 12-16 01:04:40.437: E/MediaPlayer(24133): at com.paperify.tripmark.UploadPicture.doInBackground(UploadPicture.java:1) 12-16 01:04:40.437: E/MediaPlayer(24133): at android.os.AsyncTask$2.call(AsyncTask.java:185) 12-16 01:04:40.437: E/MediaPlayer(24133): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 12-16 01:04:40.437: E/MediaPlayer(24133): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 12-16 01:04:40.437: E/MediaPlayer(24133): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 12-16 01:04:40.437: E/MediaPlayer(24133): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 12-16 01:04:40.437: E/MediaPlayer(24133): at java.lang.Thread.run(Thread.java:1019) 

The 1st line at com.paperify.tripmark.UploadPicture.doFileUpload(UploadPicture.java:141) is

BufferedReader in = new BufferedReader ( new InputStreamReader ( conn.getInputStream ( ) ) ) ; 

I don't know what wrong I am doing.

1 Answer 1

1

Use HTTP client. Here is a sample code.

import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; ... public static void uploadFile() throws Exception { HttpClient httpclient = new DefaultHttpClient(); try { HttpPost httppost = new HttpPost("http://paperify.net/tripmark/FileUpload"); StringBody filename = new StringBody("filename.ext"); File f = new File("src"+File.separator + "filename.ext"); FileBody bin = new FileBody(f); StringBody comment = new StringBody("A binary file of some kind"); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("file1", bin); reqEntity.addPart("filename", filename); reqEntity.addPart("comment", comment); httppost.setEntity(reqEntity); System.out.println("executing request " + httppost.getRequestLine()); HttpResponse response = httpclient.execute(httppost); HttpEntity resEntity = response.getEntity(); System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); if (resEntity != null) { System.out.println("Response content length: " + resEntity.getContentLength()); InputStream is = resEntity.getContent(); if (is != null) { Writer writer = new StringWriter(); char[] buffer = new char[1024]; try { Reader reader = new BufferedReader( new InputStreamReader(is, "UTF-8")); int n; while ((n = reader.read(buffer)) != -1) { writer.write(buffer, 0, n); } } finally { is.close(); } System.out.println("Response content: "+writer.toString()); } else { System.out.println("Response nothing: "); } } EntityUtils.consume(resEntity); } finally { try { httpclient.getConnectionManager().shutdown(); } catch (Exception ignore) {} } } } 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.