我想重新缩放图像并将其返回给客户端,但在将图像发送回客户端时遇到了一些麻烦。
我的服务器端 Controller :
@RequestMapping(value = {"/fw/ajax/submit_profileimage.do"})
public void submitFile(HttpServletRequest request, HttpServletResponse response, @RequestParam("file") MultipartFile f) {
try {
InputStream in = new ByteArrayInputStream(f.getBytes());
BufferedImage originalImage = ImageIO.read(in);
BufferedImage newImage = new BufferedImage(MAX_HEIGHT, MAX_WIDTH, BufferedImage.TYPE_INT_RGB);
paintComponent(newImage.getGraphics(), originalImage, getRatio(originalImage));
ImageIO.write(newImage, "png", response.getOutputStream());
response.setContentType("image/png");
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
客户端 Jquery 代码:
uploadButton.click(function(){
$('#imagePreview').addClass('loading');
form.ajaxSubmit(function(data){
alert(data); //this is where I'd like to handle the image!
});
});
ajaxSubmit返回的数据是:
"<body style="margin: 0px;"><img style="-webkit-user-select: none" src="http://localhost:8080/fairview/ajax/submit_profileimage.do"></body>"
显然不是图像文件。 但是当我检查调试器时,我可以看到submit_profileimage.do请求已成功,并且据称返回了图像!我不知道我是否在客户端或服务器端做错了什么。
那么问题是:如何在客户端显示图像?
最佳答案
我只需将调整大小的图像保存在服务器上,然后返回 jquery 简单的保存调整大小的图像的 URL。然后只需将图像的 src 属性设置为该 URL。浏览器将负责下载图像。
uploadButton.click(function(){
$('#imagePreview').addClass('loading');
form.ajaxSubmit(function(data){
//Assuming data is the URL to the resized image.
$("#myimage").attr("src", data);
});
});
关于java - 如何从 Java 服务器端发送图像,并在 JQuery 客户端处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753281/