You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by bhadu <ra...@rediffmail.com> on 2007/09/17 12:11:44 UTC

Uploading a File using Http clien

Hi all,

I have to web application using servlets.
My First web application's servlet is calling servlet of another application
using HTTP client connection.
 Calling servlet is sending file as parameter to second servlet.

My problem is that in my second servlet there is nothing in request
parameter.

Look at my code...............First servlet...........


           String urlString = "http://localhost:8787//testone//MyServlet";
		
	   		
			HttpClient client = new HttpClient();
	        PostMethod postMethod = new PostMethod(urlString);
	        post(postMethod);
	      
	        
	          
	        client.getParams().setParameter("http.useragent", "My Browser");
	        postMethod.addParameter("test","testvalue");
	        NameValuePair[] nm = {new NameValuePair("test","test")};
	        postMethod.setRequestBody(nm);
	        int statusCode1 = client.executeMethod(postMethod);
	        System.out.println(" status >>> "+statusCode1);
	        System.out.println("statusLine>>>" + postMethod.getStatusLine());
	        postMethod.releaseConnection();
	        

	}

	private void post(PostMethod postMethod) throws FileNotFoundException
	{
		 File f = new File("C:\\error.txt");
		 System.out.println("file exit = "+f.exists());
		Part[] parts = {
                new FilePart(f.getName(), f)
            };
	
postMethod.addRequestHeader("Content-type","multipart/form-data;boundary="+f.length());
		postMethod.addRequestHeader("content-disposition","form-data;
name="+f.getName());
		postMethod.setRequestEntity(
                new MultipartRequestEntity(parts, postMethod.getParams())
                );
	}

  And This is my Second servlet.......................



protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws IOException 
	{
		
		 String path = System.getenv("Target_PATH");	
		try
	    {
		  DiskFileItemFactory df = new DiskFileItemFactory();
	      PrintWriter out = response.getWriter();
	      
	        ServletFileUpload fu = new ServletFileUpload(df);
	        // If file size exceeds, a FileUploadException will be thrown
	        fu.setSizeMax(1000000);
	        
	        List fileItems = fu.parseRequest(request);
	        Iterator itr = fileItems.iterator();
	        
	        while(itr.hasNext()) {
	          FileItem fi = (FileItem)itr.next();
	         
	          createFile(path,"signedresources.txt", fi.get());
	          
	        }
	        
	        
	       
	        out.println("SUCCESS123456: ");
	      out.close();
	    }
	    catch(Exception e)
	    {
	      e.printStackTrace();
	    }
	  
		
 		
	}
	
     
	
	
    private  void createFile(String destinationPath, String fileName, byte[] 
content) throws IOException
    {     
        
        OutputStream outputStream = new FileOutputStream(destinationPath);
        outputStream.write(content);
        outputStream.flush();
        outputStream.close();
    }


problem is here....... List fileItems = fu.parseRequest(request); list is
empty.

So anybody can tell me what is wrong I m doing?

I am using Tomcat 5.0.

Thanx In advance

bhadu

-- 
View this message in context: http://www.nabble.com/Uploading-a-File-using--Http-clien-tf4465712.html#a12733027
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-user-help@jakarta.apache.org


Re: Uploading a File using Http clien

Posted by Roland Weber <os...@dubioso.net>.
bhadu wrote:
> Look at my code...............First servlet...........
> 
> 
>            String urlString = "http://localhost:8787//testone//MyServlet";
> 		
> 	   		
> 			HttpClient client = new HttpClient();
> 	        PostMethod postMethod = new PostMethod(urlString);
> 	        post(postMethod);

So here you are setting the entity of the POST method
to a multipart entity.

> 	        client.getParams().setParameter("http.useragent", "My Browser");
> 	        postMethod.addParameter("test","testvalue");
> 	        NameValuePair[] nm = {new NameValuePair("test","test")};
> 	        postMethod.setRequestBody(nm);

And here you replace that with "test=test".

An entity _is_ the request body. You can have only one.

cheers,
  Roland

> 	        int statusCode1 = client.executeMethod(postMethod);
> 	        System.out.println(" status >>> "+statusCode1);
> 	        System.out.println("statusLine>>>" + postMethod.getStatusLine());
> 	        postMethod.releaseConnection();
> 	        
> 
> 	}
> 
> 	private void post(PostMethod postMethod) throws FileNotFoundException
> 	{
> 		 File f = new File("C:\\error.txt");
> 		 System.out.println("file exit = "+f.exists());
> 		Part[] parts = {
>                 new FilePart(f.getName(), f)
>             };
> 	
> postMethod.addRequestHeader("Content-type","multipart/form-data;boundary="+f.length());
> 		postMethod.addRequestHeader("content-disposition","form-data;
> name="+f.getName());
> 		postMethod.setRequestEntity(
>                 new MultipartRequestEntity(parts, postMethod.getParams())
>                 );
> 	}
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-user-help@jakarta.apache.org