2017-09-13 25 views
2

我已经写了下面的代码,通过传递所需全部信息比它的存储字节数组做成功IT- :)图像文件上传通过REST WebService的

   @POST 
       @Path("/UploadProfileImage") 
       @Consumes(MediaType.MULTIPART_FORM_DATA) 
       @Produces(MediaType.APPLICATION_JSON) 
       public String uploadProfileImage(@FormDataParam("imageFile") InputStream uploadedImageInputStream,@HeaderParam("mPolicyGroupSeqId")String PolicyGroupSeqId){ 


     JSONArray arra = new JSONArray();   
LinkedHashMap<String, String> mapObject = new LinkedHashMap<String, String>(); 
LinkedHashMap<String,Object > mapObject1 = new LinkedHashMap<String, Object>(); 
        ArrayList<Object> LogoList = new ArrayList<Object>(); 
        try { 

         System.out.println("upload profile image"); 
String strPolicyGroupSeqId=TTKCommon.checkNull(PolicyGroupSeqId); 

    WebServiceManager webServiceManager=this.getWebServiceManagerObject(); 

    //byte[] bytes = IOUtils.toByteArray(uploadedImageInputStream); 

        byte[] bytes = new byte[1024]; 
        int bytesRead=0; 
        ByteArrayOutputStream output = new ByteArrayOutputStream(); 
        while ((bytesRead = uploadedImageInputStream.read(bytes,0,bytes.length)) != -1) 
        { 
         output.write(bytes, 0, bytesRead); 
        } 

        output.flush(); 

        byte[] byteArray = output.toByteArray(); 


        String filePath = "D:/Download Here/exist.jpg"; 


        FileOutputStream fos = new FileOutputStream(filePath); 
        BufferedOutputStream outputStream = new BufferedOutputStream(fos); 
        outputStream.write(output.toByteArray()); 

        outputStream.flush(); 




          if(uploadedImageInputStream != null){ 
           System.out.println("inputstream is not a null value"); 
          } 
          if(bytes != null){ 
           System.out.println("bytes is not a null value"); 
          } 

         int status=webServiceManager.uploadProfileImageonSubmit(strPolicyGroupSeqId,byteArray,1);  


         System.out.println(status); 

         mapObject.put("status",""+status); 





         // outputStream.close(); 
         // output.close(); 




        }//end of try 



        catch (TTKException tte) {    
         tte.printStackTrace(); 
         try{ 
          String errorMsg="Error While Searching ProfilePicture Data....."; 
          mapObject.put("status", "F"); 
          mapObject.put("error_message",errorMsg);  
          }catch(Exception ie) { 
          ie.printStackTrace(); 
          mapObject.put("status", "F"); 
          mapObject.put("error_message", "Error While Searching ProfilePicture Data!....."); 
          } 

        }catch (Exception e) { 
         e.printStackTrace(); 
         mapObject.put("status", "F"); 
         mapObject.put("error_message", "Error While Searching ProfilePicture Data?.....");    
        } 

        arra.put(mapObject); 
        //arra.put(mapObject1); 
        return arra.toString(); 

       }   

当我打电话以下网址从邮递员或肥皂UI工具在数据库中,但是输入流对象中的字节数组不正确,因为如果我将图像文件中的字节数组也转换为该图像文件,我无法打开。

。请告诉我任何其他的事情,我可以做到这一点。帮助将是非常可观的。
谢谢。

回答

0

感谢dsp_user我uesd MediaType.APPLICATION_OCTET_STREAM和邮递员我传递图像中的二进制比其工作细

@SuppressWarnings("unchecked") 
      @POST 
      @Path("/UploadProfileImage") 
      @Consumes(MediaType.APPLICATION_OCTET_STREAM) 
      @Produces(MediaType.APPLICATION_JSON) 
      public String uploadProfileImage(@FormDataParam("file")InputStream uploadedImageInputStream,@HeaderParam("mPolicyGroupSeqId")String PolicyGroupSeqId){ 

       JSONArray arra = new JSONArray();   
       LinkedHashMap<String, String> mapObject = new LinkedHashMap<String, String>(); 

       try { 



        System.out.println("upload profile image"); 
        String strPolicyGroupSeqId=TTKCommon.checkNull(PolicyGroupSeqId); 

        WebServiceManager webServiceManager=this.getWebServiceManagerObject(); 

        System.out.println("mPolicyGroupSeqId  "+PolicyGroupSeqId); 

        byte[] bytes = new byte[1024]; 

        bytes = org.apache.commons.io.IOUtils.toByteArray(uploadedImageInputStream); 

        /* 
        String filePath = "D:/Download Here/hello.png"; 

        FileOutputStream fos = new FileOutputStream(filePath); 
        BufferedOutputStream outputStream = new BufferedOutputStream(fos); 
        outputStream.write(bytes); 

        fos.flush(); 
        fos.close(); 
        outputStream.flush(); 
        outputStream.close();*/ 

        System.out.println("kbbsssssssssss "+bytes.length); 





        int status=webServiceManager.uploadProfileImageonSubmit(strPolicyGroupSeqId,bytes,1);  



        if(status==1){ 
         mapObject.put("status", "P"); 
         mapObject.put("message","Profile Picture Uploaded Successfully"); 
        }else{ 
         mapObject.put("status", "F"); 
         mapObject.put("error_message","Profile Picture Not Uploaded Successfully"); 

        } 

        System.out.println(status); 

       }//end of try 



       catch (TTKException tte) {    
        tte.printStackTrace(); 
        try{ 
         String errorMsg="!Error While Uploading ProfilePicture ..."; 
         mapObject.put("status", "F"); 
         mapObject.put("error_message",errorMsg);   
        }catch(Exception ie) { 
         ie.printStackTrace(); 
         mapObject.put("status", "F"); 
         mapObject.put("error_message", "!Error While Uploading ProfilePicture Data ..."); 
        } 

       }catch (Exception e) { 
        e.printStackTrace(); 
        mapObject.put("status", "F"); 
        mapObject.put("error_message", "!Error While Uploading ProfilePicture Data...");     
       } 

       arra.put(mapObject); 
       return arra.toString(); 


      } //end of uploadProfileImage  
1

此代码为我工作(虽然我用REST控制台客户,而不是邮差或测试了SoapUI)

@POST 
     @Path("/uploadProfileImage") 
     @Produces(MediaType.TEXT_PLAIN) 
     @Consumes(MediaType.APPLICATION_OCTET_STREAM) 
     public String saveImage(byte[] bytes) throws IOException { 

     this.saveImageToFile("D:\Download Here\exist.jpg", bytes); 
     return "Image saved"; 
     } 


     private void saveImageToFile(String savedImg, byte[] imgData) throws IOException { 

     InputStream in = new ByteArrayInputStream(imgData); 
     try { 
     BufferedImage buffImage = ImageIO.read(in); 
     ImageIO.write(buffImage, "jpg", new File(savedImg)); 
     } finally { 
     if (in != null) 
     in.close(); 
     } 

} 
相关问题