2012-02-28 32 views
0

之間的交流我做的servlet從HTML ..的Android和servlet

存儲文件是否可以使用servlet來挽救Android的代碼我的文件..

我的servlet如下

public class UploadImage extends HttpServlet{ 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    PrintWriter out = response.getWriter(); 
    boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
    System.out.println("request: "+request); 
    if (!isMultipart) { 
     System.out.println("File Not Uploaded"); 
    } else { 
     FileItemFactory factory = new DiskFileItemFactory(); 
     ServletFileUpload upload = new ServletFileUpload(factory); 
     List items = null; 

     try { 
      items = upload.parseRequest(request); 
      System.out.println("items: "+items); 
     } catch (FileUploadException e) { 
      e.printStackTrace(); 
     } 
     Iterator itr = items.iterator(); 
     while (itr.hasNext()) { 
      FileItem item = (FileItem) itr.next(); 
      if (item.isFormField()){ 
       String name = item.getFieldName(); 
       System.out.println("name: "+name); 
       String value = item.getString(); 
       System.out.println("value: "+value); 
      } else { 
       try { 
        String itemName = item.getName(); 
        Random generator = new Random(); 
        int r = Math.abs(generator.nextInt()); 

        String reg = "[.*]"; 
        String replacingtext = ""; 
        System.out.println("Text before replacing is:-" + itemName); 
        Pattern pattern = Pattern.compile(reg); 
        Matcher matcher = pattern.matcher(itemName); 
        StringBuffer buffer = new StringBuffer(); 

        while (matcher.find()) { 
         matcher.appendReplacement(buffer, replacingtext); 
        } 
        int IndexOf = itemName.indexOf("."); 
        String domainName = itemName.substring(IndexOf); 
        System.out.println("domainName: "+domainName); 

        String finalimage = buffer.toString()+"_"+r+domainName; 
        finalimage=finalimage.substring(finalimage.lastIndexOf("\\")+1,finalimage.length()); 

        System.out.println("Final Image==="+finalimage); 






        File savedFile = new File(finalimage); 
        item.write(savedFile); 
        FileInputStream in=new FileInputStream(savedFile); 


        Connection conn = null; 
        String url = "jdbc:mysql://localhost:3306/"; 
        String dbName = "test"; 
        String driver = "com.mysql.jdbc.Driver"; 
        String username = "root"; 
        String userPassword = "admin"; 
        String strQuery = null; 
        String strQuery1 = null; 
        String imgLen=""; 

        try { 
         System.out.println("itemName::::: "+itemName); 
         Class.forName(driver).newInstance(); 
         conn = DriverManager.getConnection(url+dbName,username,userPassword); 


         PreparedStatement stmt=conn.prepareStatement("insert into testimage(image) values(?)"); 


         stmt.setBinaryStream(1,in,in.available()+2); 
         stmt.executeUpdate(); 
         stmt.close(); 


         System.out.println("Query Executed Successfully++++++++++++++"); 
         out.println("image inserted successfully"); 
         out.println("</body>"); 
         out.println("</html>");      
        } catch (Exception e) { 
         System.out.println(e.getMessage()); 
        } finally { 
         conn.close(); 
        }  
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 

}

我有這樣的想法這樣的東西..但不知道。

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

      conn.setDoInput(true); 

      conn.setDoOutput(true); 

      conn.setUseCaches(false); 

      conn.setRequestMethod("POST"); 

      conn.setRequestProperty("Connection", "Keep-Alive"); 
       conn.setRequestProperty("ENCTYPE", "multipart/form-data"); 
      conn.setRequestProperty("Content-Type", 
       "multipart/form-data;boundary=" + boundary); 

什麼罐子或做這個任務

您的回覆對我來說非常有幫助..

+0

你的想法是正確的,你可以用你的代碼這一點。但是你想從我們那裏得到什麼答案 – 2012-02-28 05:40:40

回答

0

您可以使用Apache HTTP組件和mime4j發送多到你的servlet 看到這個例子

 InputStream inputStream = this.getAssets().open("image.png"); 

     HttpClient client = new DefaultHttpClient(); 
     HttpPost request = new HttpPost("http://10.10.10.144:8080/TestingApacheHttpClients/PostGetServletTest"); 


     byte[] data = IOUtils.toByteArray(inputStream);//from apache commons IO 

     InputStreamBody isb = new InputStreamBody(new ByteArrayInputStream(data), "uploadedFile"); 
     StringBody sb1 = new StringBody("Nammaeri 101"); 
     StringBody sb2 = new StringBody("this is tamara"); 

     MultipartEntity multipartEntity = new MultipartEntity(); 

     multipartEntity.addPart("fileUploaded", isb); 
     multipartEntity.addPart("parmaeter1", sb1); 
     multipartEntity.addPart("parameter2", sb2); 

     request.setEntity(multipartEntity); 
      HttpResponse response = client.execute(request); 
0

customhttpclient.java可在此鏈接customhttpclient.java

使用這個在您的項目,然後從Servlet訪問以下方式

ArrayList<NameValuePair> postdates = new ArrayList<NameValuePair>(); 
      postdates.add(new BasicNameValuePair("accountno",selected_accountno)); 
      postdates.add(new BasicNameValuePair("fromdate", fromdate)); 
      postdates.add(new BasicNameValuePair("todate", todate)); 

      try { 

      String response = CustomHttpClient.executeHttpPost("http://"+server_ip+":8080/AndroidResponse/ICICIGetAccountStatement", postdates); 
      resp = response.toString(); 
      resp = resp.replaceAll("\\s+",""); 
      //System.out.println("Resp from Server: "+ resp); 

      } catch (Exception e) { 
      //System.out.println("Error at after server response :"+e.toString()); 
      }