作为一个常用的功能,自己做个笔记,免得到时候又找百度。
1、图片文件的上传,这个和普通文件的上传是一样的,从页面选择图片文件到数据传至Action的操作,之前的日记中已经说明过,不再赘述,主要说怎样将图片文件存入数据库以及从数据库中读出来显示在页面的问题。
2、图片文件存入数据库,SQLServer2005数据库中字段定义为:image,oracle中可以使用blob类型,mysql中可以使用blob或者longblob等类型。
2.1、图片实体类定义:
@Entity
@Table(name = "OBJ_PHOTO")
public class Photo extends DomainObject {
@Column(name = "photoName", nullable = false)
private StringphotoName;
@Column(name = "photoAddr", nullable = false)
private byte[]photoAddr; // 图片文件定义为byte[]
// get和set方法。。。。
}
2.2、将图片存入数据库:
Photophoto = newPhoto();
InputStream in = null;
if (StringUtils.isNotEmpty(formBean.getPhotoAddrFileName())) {
try {
byte buffer[] = new byte[(int)formBean.getPhotoAddr().length()];
in = new FileInputStream(formBean.getPhotoAddr());
in.read(buffer);
photo.setPhotoAddr(buffer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
photo.setPhotoName(formBean.getPhotoName());
photoDao.save(photo);
3、图片存入数据库之后如何显示在页面上:
3.1、首先在Action中定义一个InputStream对象:
private InputStream imagStream;
// get和set方法。。。
3.2、Action中定义一个方法:
public String getPhoto(){
String id = request.getParameter("id");
Photo Photo= mapService.getMapById(id);
return "photoImag";
}
3.3、struts.xml文件配置:
<result name="photoImag" type="stream">
<param name="contentType">image/jpeg,image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param>
<param name="inputName">imagStream</param>
</result>
3.4、jsp页面如何显示图片:
<img id="preview" src="photoAction!getPhoto.action?id=<s:property value='id'/>" /> // 此处传入该图片文件的ID,调用Action中的方法getPhoto即可在页面显示图片