通过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 mapObject = new LinkedHashMap(); LinkedHashMap mapObject1 = new LinkedHashMap(); ArrayList LogoList = new ArrayList(); 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(); } 

当我通过Postman或soap UI工具调用以下URL时,通过在数据库中成功传递所有必需的详细信息而不是其存储字节数组,但是输入流对象中的字节数组是不正确的,因为如果我在图像文件中转换该字节数组也不是那个图像文件,我无法打开。

。请给我任何其他我能做到的事情。帮助将是非常值得注意的。
谢谢。

这段代码对我有用(虽然我使用REST控制台客户端测试,而不是Postman或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(); } } 

谢谢dsp_user我使用了MediaType.APPLICATION_OCTET_STREAM,并且从postman我传递的图像是二进制比它的工作正常

 @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 mapObject = new LinkedHashMap(); 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