【发布时间】:2011-10-13 11:15:35
【问题描述】:
我想重新缩放图像并将其返回给客户端,但在将图像发送回客户端时遇到了一些问题。
我的服务器端控制器:
@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 请求已经成功,并且据称返回了一个图像!我不知道我是在客户端还是在服务器端做错了什么。
所以问题是:如何在客户端显示图像?
【问题讨论】:
标签: java jquery ajax image servlets