0

我正在使用base64字符串图像通过ajax调用发送,并在spring控制器中接收它,如下所示,

function saveImages(e){
alert("inside save images "+e);


var x = $('#image'+e).prop('src');

$.ajax({
    type : "POST",
    contentType : 'text/plain',
    url : "saveUserImage",
    data : 'imagecode=' + x ,
    dataType : 'json',              
    success : function(data) {
        alert("success");
    },
    error: function (resp) {
        window.location.reload();
    }
});
}

在上面的 ajax 调用中 x 是 base64 图像数据,

@RequestMapping(value="/saveUserImage", method = RequestMethod.POST)
    public void saveImage(ModelMap model, Principal principal,HttpSession session,@RequestBody String imageString) throws UnsupportedEncodingException {    
    
    String imagedata=imageString.replace("imagecode=", "");     
    //here I am decoding imageString to bytes
    byte[] decodedBytes = Base64.decodeBase64(imagedata);       
    
    UserImages image=new UserImages();
    //here I am saving to my UserImages pojo
    image.setFiledata(decodedBytes);
    image.setUSER_ID(Integer.parseInt(userid));
    //database call to save image
    service.saveImage(image);
}

在上面的控制器代码中,我已将字符串解码为字节,并将其保存到数据库中。

当我检索该图像以显示图像时,我正在编码回 base64 字符串

   List<UserImages> list=service.viewImages(profile);
  Iterator it=list.listIterator();
  while(it.hasNext()) {
 UserImages images=(UserImages) it.next();
 ImagesTest image=new ImagesTest();//another pojo to set base64 string & to show in frontend
 image.setUploadid(images.getUploadid());
 //here encoding the decoded bytes to base64 string ,which I have stored  in database
 byte[] encodeBase64 = Base64.encodeBase64(images.getFiledata());
  String base64Encoded = new String(encodeBase64, "UTF-8");
 image.setBase64String(base64Encoded);
 newList.add(image);
  }
  model.addAttribute("imagespojo", newList);

我得到了不同的 base64 字符串,我看不到图像。因此,我将 base64Encoded 更改为,

 base64Encoded.replace("dataimage", "data:image").replace("base64", ";base64,")

现在它适用于 jpeg 图像,当我尝试保存 png 图像时,图像再次不可见。

4

0 回答 0