Reputation: 143
I have written below code to do it- :)
@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();
}
when i am calling below URL from Postman or soap UI tool by passing all required details than its storing byte array successfully in database but that byte array which is coming in input stream object is not proper because if i am converting that byte array in image file also than that image file , i am not able to open.
.please suggest me any other thing i can do for achieving this .help will be highly appreciable.
thanks.
Upvotes: 2
Views: 2643
Reputation: 143
Thanks dsp_user I uesd MediaType.APPLICATION_OCTET_STREAM and from postman i am passing image in binary than its working fine
@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
Upvotes: 0
Reputation: 2119
This code worked for me (though I tested with a REST console client, not Postman or 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();
}
}
Upvotes: 2