`
ynztpwl
  • 浏览: 59516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts保存图片到数据库 ,从数据库中读取图片显示到页面

 
阅读更多

1、数据结构:

CREATE TABLE [photo] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[ordernumber] [nvarchar] (20)[photo] [image] NULL ,
PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

2、整体架构:struts2+spring2+hibernate3

3、vo结构:

public class Photo implements Serializable
{
private int id;
private String ordernum;
private byte[] photo;

......省get(),set()方法

}

4、数据存取DAO:

public interface PhotoDao
{
public void savePhoto(Photo photo);
public Photo getPhoto(String ordername);
}

5、实现

public class PhotoDaoHibernate extends HibernateDaoSupport implements PhotoDao
{

@Override
public Photo getPhoto(String ordername)
{
List list=this.getHibernateTemplate().find("from Photo where ordernum=?",ordername);
System.out.println("listsize"+list.size()+";filename:"+ordername);
if(list.size()>0)
{

return (Photo)list.get(0);
}
else
{
return null;
}
}

@Override
public void savePhoto(Photo photo)
{
this.getHibernateTemplate().save(photo);

}

}

5、上传Action

public class UpLoadPhoto extends ActionSupport
{
private PhotoDao pdi;//pdi为通过spring注入的Dao实例,用于把Photo对象存入数据库
private String filename;
private File upload;
private InputStream inputStream;
public void setInputStream(InputStream inputStream)
{
this.inputStream = inputStream;
}
public String upload()
{
if(filename!=null && !"".equals(filename))
{
Photo photo=new Photo();
photo.setOrdernum(filename);
photo.setPhoto(getBytesFromFile(upload));
System.out.println(photo.getOrdernum()+photo.getPhoto());
pdi.savePhoto(photo);
}
return SUCCESS;
}
public static byte[] getBytesFromFile( File file ) {

long length = file.length();
byte[] bytes = new byte[(int)length];

try {
InputStream is = new FileInputStream(file);

// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}

// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+file.getName());
}

// Close the input stream and return bytes
is.close();
} catch(Exception e ) {
throw new RuntimeException(e);
}
return bytes;
}

}

*/
public PhotoDao getPdi()
{
return pdi;
}
public void setPdi(PhotoDao pdi)
{
this.pdi = pdi;
}
public String getFilename()
{
return filename;
}
public void setFilename(String filename)
{
this.filename = filename;
}
public File getUpload()
{
return upload;
}
public void setUpload(File upload)
{
this.upload = upload;
}


}

6、jsp上传

<s:form action="uploadfile" method="post" enctype="multipart/form-data">
<s:file name="upload"/>
文件名:<s:textfield name="filename"/>
<s:submit value="图片上传"></s:submit>
</s:form>

7、用于从数居库显示图片的Action

public class ShowPhoto extends ActionSupport
{
private PhotoDao pdi;
private String filename;
public String getFilename()
{
return filename;
}

public void setFilename(String filename)
{
this.filename = filename;
}

public PhotoDao getPdi()
{
return pdi;
}

public void setPdi(PhotoDao pdi)
{
this.pdi = pdi;
}

@Override
public String execute() throws Exception
{
// TODO Auto-generated method stub
return SUCCESS;
}
public InputStream getInputStream()
{

Photo photo=new Photo();
try
{
photo=pdi.getPhoto(filename);

} catch (RuntimeException e)
{
e.printStackTrace();
}
if(photo==null||photo.getPhoto()==null)
{
return null;
}
else
{
System.out.println(photo.getOrdernum());
System.out.println(photo.getPhoto());
System.out.println("Image_Lenghth:"+photo.getPhoto().length);
ByteArrayInputStream bais;
try
{
bais = new ByteArrayInputStream(photo.getPhoto());
return bais;
} catch (RuntimeException e)
{
e.printStackTrace();
return null;
}

}
}

}

8、jsp中显示图片

<s:url id="image" action="getPhoto?filename=ck" /><!--ck为数据库中查找图片的关键字(上传时设的文件名)-->
<img src="<s:property value="#image"/>"/>

9、struts.xml配置

<action name="uploadfile" class="uploadfile" method="upload"><!-- 指定逻辑方法method -->
<result name="success">/success.jsp</result>
</action>
<action name="getPhoto" class="getPhoto" >
<result name="success" type="stream">
<param name="contentType">image/jpeg</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="s.jpg"</param><!--指定默认文件名-->
<param name="bufferSize">1024</param>><!--指定缓存大小-->
</result>
</action>

分享到:
评论

相关推荐

    struts下上传图片到数据库并显示到页面实例

    在数据库中存储图片后,我们需要提供一个方法来从数据库中读取图片并显示在页面上。这可能涉及到创建一个新的Action或者在现有Action中添加一个新方法,该方法将查询数据库获取图片数据,并将其发送到响应。 ```...

    struts1上传图片,保存数据库,再显示jsp页面

    在“struts1上传图片,保存数据库,再显示jsp页面”这个场景中,我们将探讨如何利用Struts1实现文件上传,将图片数据保存到数据库,并在JSP页面上展示。 1. **Struts1的文件上传组件**: Struts1并不直接支持文件...

    ssh保存图片到数据库

    在这个场景中,“ssh保存图片到数据库”指的是使用SSH框架将图片数据存储到数据库中,以便于在应用中进行管理和展示。通常,这涉及到几个关键步骤: 1. **读取图片**:首先,你需要一个用户接口来上传图片,可能是...

    struts2+jdbc实现图片的存储与显示(图片存储在数据库内)

    在本项目"struts2+jdbc实现图片的存储与显示(图片存储在数据库内)"中,我们将探讨如何结合这两个技术来处理图片数据,将图片存储到数据库内,并从数据库中检索以供显示。 首先,我们需要了解在数据库中存储图片的...

    使用Struts2上传图片存取到Mysql中并读取出来显示在页面上_好资源0分送

    本文将详细介绍如何利用Struts2框架结合Spring和Hibernate技术栈实现图片的上传、存储至MySQL数据库以及从数据库读取并在Web页面展示的功能。整个过程不涉及Servlet的操作。 #### 需求分析与实现目标 1. **图片...

    Struts用JDBC的Blob字段保存和读取Oracle数据库

    本文将详细介绍如何使用Struts结合JDBC操作Oracle数据库中的Blob字段实现文件的保存和读取。 #### 代码分析 根据提供的部分代码示例,我们可以将其分为两个主要部分:文件保存和文件读取。 ##### 文件保存 文件...

    存图片到数据库

    4. 创建一个方法从数据库读取图片数据。 5. 在JSP页面中使用合适的方法显示图片数据,如`data:` URL或JavaScript。 这种做法的优点是易于管理和检索,但缺点是可能会增大数据库的负担,不适合大量图片存储。对于...

    把图片以数据的形式保存在数据库 上传图片

    在保存图片时,将转换后的字节数组设置到对应的属性中,然后通过Hibernate的`Session`对象进行持久化操作。 5. **异常处理**:在处理过程中,应确保捕获可能的异常,如文件过大、格式不正确或数据库操作失败等,并...

    struts2上传图片到Oracle

    要从数据库中读取并显示图片,可以创建一个`displayImage` Action,查询相应的记录,然后将BLOB数据转换回InputStream,通过HTTP响应发送给客户端。需要注意的是,这通常不建议直接在网页上展示,因为可能会导致性能...

    java+mysql中保存图片及显示上传的图片struts+hibernate.docx

    ### Java + MySQL中保存图片及显示上传的图片(Struts + Hibernate) #### 一、概述 在Web开发中,处理用户上传的图片是一项常见的需求。本文档将详细介绍如何使用Java结合MySQL数据库,以及Struts和Hibernate框架...

    struts1.2 图片上传下载 源代码

    在这个"struts1.2 图片上传下载 源代码"中,我们可以学习到如何利用Struts1.2框架来实现这一功能。 首先,我们需要了解Struts1.2中的ActionForm类。ActionForm是模型层与控制器层之间的桥梁,用于接收和封装用户的...

    struts1.2实现图片上传

    这通常包括读取上传文件,将其保存到服务器的某个位置,例如Tomcat的webapp目录下。代码可能如下: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, ...

    struts2.0图片上传代码

    Struts2.0图片上传是Web开发中常见的一项功能,涉及到的主要知识点包括Struts2框架、文件上传处理、IO流操作以及配置文件的设定。在本文中,我们将深入探讨这些内容,帮助你理解和实现Struts2.0环境下的图片上传功能...

    struts2无刷新上传图片

    在响应中,服务器可以返回图片的URL或状态信息,前端接收到这些信息后更新页面,显示上传的图片,而无需刷新整个页面。 此外,为了提高用户体验,我们还可以添加进度条显示文件上传进度,这需要利用HTML5的File API...

    Struts2+Hibernate实现文件上传

    在这个“Struts2+Hibernate实现文件上传”的项目中,我们将探讨如何结合这两个框架来实现在Web应用中上传图片并存储到数据库的过程。 首先,让我们从Struts2的角度来看。Struts2提供了一种灵活的MVC(模型-视图-...

    struts2上传图片

    处理上传逻辑时,可以读取文件内容并保存到服务器的指定位置: ```java public String execute() { if (image != null && !image.isEmpty()) { String savePath = "uploads/" + imageFileName; try { File save...

    Struts2中图片以base64方式上传至数据库

    当需要展示图片时,从数据库中取出Base64编码的字符串,然后在HTML中使用`data:` URL方案,将Base64字符串插入到`&lt;img&gt;`标签的`src`属性中,浏览器会自动解码并显示图片。 总结来说,Struts2中以Base64方式上传...

    struts文件上传例子及页面基本标签用法

    在Struts框架中,文件上传功能是一个常见的需求,尤其是在处理用户提交表单时,比如上传图片、文档等。在这个例子中,我们将探讨如何在Struts中实现文件上传,并了解一些基本的页面标签用法。 首先,文件上传在...

    struts项目商品.rar

    用户可以通过前端页面上传图片,服务器端接收并保存到指定目录,同时可能还需要处理图片的大小、格式限制等问题。 4. **前端技术**:前端使用了Bootstrap框架,这是一个流行的响应式网页设计工具,可以快速构建美观...

    jsp多文件上传到数据库.doc

    这个页面通过迭代器遍历数据库中的文件记录,并显示对应的图片。 最后,别忘了在Struts2的配置文件(`struts.xml`)中定义Action和结果,以便Struts2知道如何处理用户的请求和返回结果: ```xml &lt;struts&gt; &lt;!-- 其他...

Global site tag (gtag.js) - Google Analytics