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:
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:
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)