0

I want to reconvert a base64 cripted image, to stored this image in the server. For example I have uploaded an image from angular, my base64 encoder generates this json file:

{
"filetype": "image/png",
"filename": "StudyPlan.png",
"filesize": 88008,
"base64": "iVBORw0KGgoAAAANSUhEUgAAA3oAAALBCAIAAACBS0QtAAAAAX…hRIxIbgohhBBCiNi4e/f/A/9ytmLOCOL/AAAAAElFTkSuQmCC"
}

I want to reconvert the base64 String attribute to save the image in local storage. For this reason I have implemented a java class:

@Path("/upload")
public class UploadImageServices {
 @POST
 @Produces(MediaType.APPLICATION_JSON)
 public int addImage(MyFile file) throws IOException  {
 
  String imageString = file.getBase64();

  // create a buffered image
  BufferedImage image = null;
  byte[] imageByte;

  BASE64Decoder decoder = new BASE64Decoder();
  imageByte = decoder.decodeBuffer(imageString);
  ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
  image = ImageIO.read(bis);
  bis.close();

  // write the image to a file
  File outputfile = new File("image.png");
  ImageIO.write(image, "png", outputfile);
  return 0;
 }
}

Where MyFile a model from MyFile.java:

package it.jack.fdd.util;

public class MyFile {
 private String filetype;
 private String filename;
 private Integer filesize;
 public String getFiletype() {
  return filetype;
 }
 public void setFiletype(String filetype) {
  this.filetype = filetype;
 }
 public String getFilename() {
  return filename;
 }
 public void setFilename(String filename) {
  this.filename = filename;
 }
 public Integer getFilesize() {
  return filesize;
 }
 public void setFilesize(Integer filesize) {
  this.filesize = filesize;
 }
 public String getBase64() {
  return base64;
 }
 public void setBase64(String base64) {
  this.base64 = base64;
 }
 private String base64;
}

When I send that Json String, give me error 500: enter image description here

and I don't explain why it doesn't works. What is the error in my java class? It really can save an image?

new error with the real json string:

enter image description here

java.lang.NullPointerException
 javax.imageio.ImageIO.write(ImageIO.java:1538)
 it.jack.fdd.services.UploadImageServices.addImage(UploadImageServices.java:55)
 sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 java.lang.reflect.Method.invoke(Method.java:497)
 com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
 com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
 com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
 com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
 com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
 com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
 com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
 com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
 com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
 com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
 com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
 com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
 com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 org.apache.catalina.filters.CorsFilter.handleSimpleCORS(CorsFilter.java:301)
 org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:169)
Giacomo Brunetta
  • 1,409
  • 3
  • 18
  • 38

0 Answers0