我正在使用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 图像时,图像再次不可见。