关于byte[]型图片上传并保存到数据库的问题,求教于高手,谢谢了

angelliang 2011-07-08 06:32:47
实体类(省略get/set方法)Sport.java
private int id;
private String sportName;
private byte[] image;
private Date createTime;
private String description;

业务逻辑方法:SportManagerImpl.java
public void add(Sport sport)
{

this.getHibernateTemplate().save(sport);

}

Struts Action: SportAction.java
public String sport_addsuccess()
{
boolean b = sm.sportExist(saf.getSportName());//验证
if (b == true)
{
return "sport_addfail";
}
Sport s = new Sport();
s.setSportName(saf.getSportName()); //SportActionForm saf = new SportActionForm();
s.setCreateTime(new Date());
s.setDescription(saf.getDescription());
s.setImage(saf.getImage());
this.sm.add(s);

return "sport_addsuccess";
}


jsp页面:(请看上传图片那列文件输入框,和 Form 的 enctype属性有没有出错?)
<form action="sport_addsuccess" method="post" enctype="application/x-www-form-urlencoded" >
<table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">
<!-- 列表标题栏 -->
<tr bgcolor="#EFF3F7" class="TableBody1">
<td width="40%" height="37" align="center"><B>名称:<input type="text" name="sportName"/></B></td>
</tr>
<tr>
<td width="60%" height="37" align="center"><B>描述:<input type="text" name="description"/></B></td>
</tr>
<tr>
<td width="30%" height="37" align="center"><b>创建时间:<input type="text" name="createTime" value="<%=new Date() %>" disabled="disabled"/></b></td>
</tr>

<tr bgcolor="#EFF3F7" class="TableBody1" onmouseover="this.bgColor = '#DEE7FF';" onmouseout="this.bgColor='#EFF3F7';">
<td width="60%" height="37" align="center" colspan="100%"><b>上传图片:<input type="file" name="image" /></b></td>


</tr>

<tr>
<td width="40%" height="37" align="center"><b>
<input type="submit" name="submit" value="添加" width="25%"/>
<input type="reset" name="reset" value="重置" width="25%"/></b>
</td>
</tr>

</table>
</form>


最后提交的时候就出现下面的异常了:原因我也知道,就是解决不了,特此求救高手!
ognl.MethodFailedException: Method "setImage" failed for object com.lgp.cms.form.SportActionForm@ed7d11 [java.lang.NoSuchMethodException: setImage([Ljava.lang.String;)]
...........
...........
java.lang.NoSuchMethodException: setImage([Ljava.lang.String;)
...........
expr: image val: [Ljava.lang.String;@4ad14c context: ognl.OgnlContext@aa4306b0 root:[com.lgp.cms.form.SportActionForm@ed7d11, com.lgp.cms.action.SportAction@1f2e41d, com.opensymphony.xwork2.DefaultTextProvider@15e4dbe] value: [Ljava.lang.String;@4ad14c
[Tomcat]2011-07-08 17:55:56,515["http-apr-8080"-exec-5]Could not find action or result
No result defined for action com.lgp.cms.action.SportAction and result input
...........
(我知道是文件存入数据库时候错误,方法不对,但是怎么修正我 的业务逻辑方法呢?)在线等,谢谢!
...全文
180 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zn85600301 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 angelliang 的回复:]

4#的兄弟能否给点代码!我是Java新手,不会写啊,多谢了.....
[/Quote]
你一定要把图片存入数据库吗?
一般的上传文件就可以了 将文件上传服务器 并将其路径保存在数据库中
angelliang 2011-07-11
  • 打赏
  • 举报
回复
4#的兄弟能否给点代码!我是Java新手,不会写啊,多谢了.....
xdrs1314 2011-07-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 angelliang 的回复:]

saf.getImage()这个方法返回的是byte[] 型数组。我想把图片存入数据库,然后像其他属性一样作展现的时候能够展现出来。multipart/form-data 和 enctype="application/x-www-form-urlencoded"都可以用作上传的。在这里我的想法是:从本地磁盘把图片作为Sport的一个属性保存到数据库,然后展现,这样就算磁盘发生改变只要数据库没变就……
[/Quote]一般是将图片保存在服务器上的某个目录下,而后将该图片所在的目录及名字放到数据库中一列中,而后到时候显示的时候,就能根据这么目录找到对应图片了.
dracularking 2011-07-08
  • 打赏
  • 举报
回复
文件存入數據庫時錯誤爲什麽會報
java.lang.NoSuchMethodException: setImage([Ljava.lang.String;)
貌似是沒有setImage([Ljava.lang.String;)方法啊
angelliang 2011-07-08
  • 打赏
  • 举报
回复
saf.getImage()这个方法返回的是byte[] 型数组。我想把图片存入数据库,然后像其他属性一样作展现的时候能够展现出来。multipart/form-data 和 enctype="application/x-www-form-urlencoded"都可以用作上传的。在这里我的想法是:从本地磁盘把图片作为Sport的一个属性保存到数据库,然后展现,这样就算磁盘发生改变只要数据库没变就能够展现出来。
像这样的话,你们一般都是怎么干的?能否给点代码?谢谢了...
Spring89 2011-07-08
  • 打赏
  • 举报
回复
上传图片,form表单的enctype应该是multipart/form-data呀,你写的是什么?
saf.getImage()这个方法返回的是什么?你为什么要把图片存在数据库中?
到时候取的时候你就很麻烦了,又要重新写入流...
上传图片的做法都是把图片保存在磁盘上。。。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧