SSH图片的上传和在页面的显示

首先,图片在hibernate的配置文件中要标示为:

<property name="photo"
   type="org.springframework.orm.hibernate3.support.BlobByteArrayType">
   <column name="PHOTO" />
  </property>

 这样图片在数据库中是以BLOB形式存储的。在对应的实体类中:

private byte[] photo;

 将其定义为字符数组的形式。

上传:对应的form定义上传文件

public class StudentInfoForm extends ActionForm {
       private FormFile         uploadFile ;
      public FormFile getUploadFile() {
		return uploadFile;
	}
	
    public void setUploadFile(FormFile uploadFile) {
		this.uploadFile = uploadFile;
	}     
}

  对应的jsp页面中声明:将实体类的photo属性作为隐藏域保存在页面中。

<tr>
<td width="10%" height="15" align="right" valign="middle" bgcolor="#F2F2F2">
    照片&nbsp;
</td>
<td align="left" colspan="5" bgcolor="#FFFFFF">
    <nested:hidden property="photo"></nested:hidden>
    <html:file property="uploadFile"       οnchange="selectFile'f1','uploadFile');" style="width: 223px;" />
</td>
</tr>

 以上当form提交时,执行相应的后台操作上传便完成了。

  下载:在具体的要下载图片的jsp页面中代码如下:

<td width="10%">
照片&nbsp;
</td>
<td align="left" rowspan="8" >
<nested:hidden property="photo" />
<img src="StudentInfo.do? method=showWorkerPicture&id=${StudentInfoForm.saveObject.studentId}" />
</td>

     我利用的是在action中写一个没有 forward为空的方法来获取图片的信息。具体代码:

 public ActionForward showWorkerPicture(ActionMapping mapping,
ActionForm form, HttpServletRequest request,HttpServletResponse response) {
	ActionForward forward = null;	Java代码 
                String studentId = request.getParameter("id");   
                Long id = Long.parseLong(studentId.trim());   
               CourseStudentBas condition = new CourseStudentBas();//条件对象   
          condition.setStudentId(id);   
              CourseStudentBas pageObject = null;  //包含照片信息的队形。   
   try {   
        pageObject = this.getStudentInfoService().findById(condition);   
        byte[] imageBinary = pageObject.getPhoto();   
        response.setContentType("image/jpeg");   
       OutputStream outs = response.getOutputStream();   
        for (int i = 0; i < imageBinary.length; i++) {   
           outs.write(imageBinary[i]);// 输出到页面   
        }   
        outs.flush();
    } catch (Exception e) {   
return forward;   
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值