如何使用 GWT 在客户端处理图像/gif 类型响应

Posted

技术标签:

【中文标题】如何使用 GWT 在客户端处理图像/gif 类型响应【英文标题】:How to handle image/gif type response on client side using GWT 【发布时间】:2009-11-19 12:20:25 【问题描述】:

我有一个关于如何在客户端处理图像/gif 类型响应的问题,任何建议都会很棒。 有一项服务响应从数据库中检索图像(目前每次只有一个)。代码是这样的,

JDBC 连接 构造 mysql 查询。 执行查询 如果有 ResultSet,则检索第一个 //将图像保存为Blob图像,“img”是图像表中唯一的实体。 图像 = rs.getBlob("img"); response.setContentType("图片/gif"); //设置响应类型 InputStream in = image.getBinaryStream(); //输出Blob图片到InputStream int 缓冲区大小 = 1024; //缓冲区大小 字节 [] 缓冲区 = 新字节 [缓冲区大小]; //初始缓冲区 整数长度=0; //从输入流中读取长度数据并存入缓冲区 而((长度= in.read(缓冲区))!= -1) out.write(缓冲区,0,长度); //写入ServletOutputStream 附寄(); out.flush(); //写出

客户端代码

…… imgform.setAction(GWT.getModuleBaseURL() + "serviceexample/ImgRetrieve"); …… 点击监听器 OnClick,然后是 imgform.submit(); 表单处理程序 onSubmit,表单验证 提交完成 ?????? //处理响应,并显示图像 **这是我的问题,我试过了 图片 img = new Image(GWT.getHostPageBaseURL() +"serviceexample/ImgRetrieve"); mg.setSize("300", "300"); imgpanel.add(img); 但我只得到了 300X300 尺寸的非显示图像。**

那么,在这种情况下,我应该如何处理响应者?

谢谢,

【问题讨论】:

【参考方案1】:

您的问题非常晦涩...我看到旧式 html 表单/提交和 GWT 代码的组合。

普通的 GWT 应用程序只需要在 UI 中的某个位置放置一个 Image 小部件,该小部件引用您描述的图像服务的 url。

如何或何时显示图像由您决定。 但是,您需要做的就是让浏览器中显示的图像

Image img = new Image([图片服务的网址]); 面板.add(img);

其中 panel 是已经显示的某个面板。

如果您希望等到用户单击某个按钮后才显示图像,请执行以下操作:

button.addClickHandler(新 ClickHandler() 公共无效点击(点击事件e) Image img = new Image([图片服务的网址]); 面板.add(img); );

【讨论】:

也许我没有正确解释我的问题。实际上,我的应用程序是创建一个注册用户登录界面。注册用户的照片存储在数据库中(注册时上传),一旦用户登录成功,他/她的照片将从数据库中检索并显示,所以使用表单提交和GWT的组合是我找到的唯一解决方案,只是想知道如果在这种情况下可以使用任何其他技术,因为这是我的第一个 GWT 应用程序。 我曾尝试使用
Image img = new Image( “google.com/intl/en_AL/images/logo.gif” );
显示图像,它按预期工作。因为我的图像存储在 ServletOutputStream ,我尝试使用
Image img = new Image (GWT.getHostPageBaseURL() + "serviceexample/ImgRetrieve"); 
但图片不显示。
在 GWT 论坛找到一个帖子,groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/…

以上是关于如何使用 GWT 在客户端处理图像/gif 类型响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在客户端到达 OnFailure() 之前处理 RPC 失败错误?在 GWT

GWT 客户端图像裁剪和调整大小

GWT 客户端图片上传和预览

RPC 调用期间 GWT 冻结

GWT:如何在鼠标事件上更改菜单栏图像?

text 我们如何补偿所有各种图像类型:png,jpeg,jpg,gif?