Struts2.0 图片的上传与下载的实现
2012-08-02 11:03
537 查看
图片上传的JSP页面,即register.jsp。此处要注意:要上传图片,必须要在form中加入此代码,enctype="multipart/form-data",否则,上传无效的。
RegisterAction.java中,通过get、set方法来获取表单传来的值即可。此处注意upload类型为File即可。
UserInfoDAO.java中的registerUser()代码实现。数据库中upload的字段类型为:mediumblob。所以,此处用setBlob。
以上为图片的上传。很简单吧。
下面即为图片的下载了。
首先,我们要实现一个人员在查看详细信息时,要求显示这个人的头像。即:userdetails.jsp页面。
以上的userBean,即把,人员的详细信息封装在UserBean中。通过在后台中的UserDetailsAction.java中,以set、get方法来传到前台来。如下:
具体后台的queryUserDetails()方法的实现就不贴出来了,很简单的了。
现在来看userdetails.jsp页面中的<img name="upload"
src="GetPhoto.action?username=<%=username%>" width="128"
height="128" />
以下即是GetPhotoAction.java的实现。
上段代码中getPhoto()方法的实现。此段方法放在UserInfoDAO.java中。
struts.xml中的代码,如下:
struts.xml中的<param name="inputName">photo</param> 此处的photo要与GetPhotoAction.java中getPhoto()方法中相对应。
以上即为简单的实现,还有很多不足的地方。
例如只能上传jpg格式的图片,下载的时候图片的名称也不能为中文(此处需要用到过滤器来实现即可)。
之所以写这些博客,主要是供自己以后学习的哈。
不过,也能帮助到其他人的吧。我在实现之前,一直有找资料。
发现网上有好多都是一样的,同样一段实现代码被copy来copy去的。
汗,也许是自己笨吧,别人的代码不太适合自己现在的这个框架,所以,自己多花了点时间,实现了一个哈。
如有不足之处,还望大家多多指教。共同进步哈。O(∩_∩)O~
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>User Register</title> </head> <body> <s:form action="Register.action" method="post" theme="simple" enctype="multipart/form-data"> <table align="left" width="50%" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="right"><s:text name="user.username"></s:text>:</td> <td align="left" height="30" valign="middle"><s:textfield name="username" key="user.username"></s:textfield></td> </tr> <tr> <td align="right"><s:text name="user.password"></s:text>:</td> <td align="left" height="30" valign="middle"><s:textfield name="password" key="user.password"></s:textfield></td> </tr> <tr> <td align="right" height="30" valign="middle"><s:text name="user.register.sex"></s:text>:</td> <td align="left"><s:radio name="sex" list="%{#{'1':'男','0':'女'}}" value="1" theme="simple"></s:radio></td> </tr> <tr> <td align="right" height="30" valign="middle"><s:text name="user.register.upload"></s:text>:</td> <td align="left"><s:file label="上传" theme="simple" name="upload" /></td> </tr> <tr> <td align="right"><s:submit class="btn" value="完成"></s:submit></td> <td align="center"><s:reset class="btn" value="重置"></s:reset></td> </tr> </table> </s:form> </body> </html>
RegisterAction.java中,通过get、set方法来获取表单传来的值即可。此处注意upload类型为File即可。
package com.struts.action; import java.io.File; import java.util.List; import com.opensymphony.xwork2.ActionSupport; import com.struts.bean.UserBean; import com.struts.dao.UserInfoDAO; public class RegisterAction extends ActionSupport { private String username=""; private String password="user"; private int sex; private File upload; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String execute() throws Exception { if(username.equalsIgnoreCase("")){ return "input"; } UserInfoDAO userDAO=new UserInfoDAO(); int result=userDAO.registerUser(username,password,sex,upload); if (result != 0){ return "success"; } else{ return "error"; } } }
UserInfoDAO.java中的registerUser()代码实现。数据库中upload的字段类型为:mediumblob。所以,此处用setBlob。
public int registerUser(String username, String password, int sex, File upload) throws SQLException, IOException { //FileInputStream in = null; conn = ConnectDB.getConn(); //System.out.println(upload); //in = new FileInputStream(upload); String strSql = "insert into userlist(username,sex,upload,password)values(?,?,?,?)"; pstmt = conn.prepareStatement(strSql); pstmt.setString(1, username); pstmt.setInt(2, sex); //pstmt.setBinaryStream(3, in, in.available()); pstmt.setBlob(3, new FileInputStream(upload)); pstmt.setString(4, password); result = pstmt.executeUpdate(); return result; }
以上为图片的上传。很简单吧。
下面即为图片的下载了。
首先,我们要实现一个人员在查看详细信息时,要求显示这个人的头像。即:userdetails.jsp页面。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib uri="/struts-tags" prefix="s"%> <%@page import="com.struts.bean.UserBean"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <% UserBean userBean = (UserBean) request.getAttribute("userBean"); String username = userBean.getUsername(); int sex = userBean.getSex(); %> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>User Details</title> </head> <body> <s:form action="UserInfo.action" method="post" theme="simple"> <table align="left" width="30%" border="1" cellpadding="0" cellspacing="0"> <tr> <td align="right"><s:text name="user.username"></s:text>:</td> <td align="left" height="30" valign="middle"><%=username%></td> </tr> <tr> <td align="right"><s:text name="user.register.sex"></s:text>:</td> <td align="left" height="30" valign="middle"> <% if (sex == 0) { %><s:text name="女"></s:text> <% } else { %> <s:text name="男"></s:text> <% } %> </td> </tr> <tr> <td align="right"><s:text name="user.register.upload"></s:text>:</td> <td><img name="upload" src="GetPhoto.action?username=<%=username%>" width="128" height="128" /></td> </tr> <tr> <td align="right"><s:submit class="btn" value="返回"></s:submit></td> </tr> </table> </s:form> </body> </html>
以上的userBean,即把,人员的详细信息封装在UserBean中。通过在后台中的UserDetailsAction.java中,以set、get方法来传到前台来。如下:
package com.struts.action; import com.struts.bean.UserBean; import com.struts.dao.UserInfoDAO; public class UserDetailsAction { private String username; private UserBean userBean; private int sex; public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public UserBean getUserBean() { return userBean; } public void setUserBean(UserBean userBean) { this.userBean = userBean; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String execute() throws Exception { UserInfoDAO userDetails = new UserInfoDAO(); UserBean userBean = userDetails.queryUserDetails(username); this.userBean = userBean; return "userdetails"; } }
具体后台的queryUserDetails()方法的实现就不贴出来了,很简单的了。
现在来看userdetails.jsp页面中的<img name="upload"
src="GetPhoto.action?username=<%=username%>" width="128"
height="128" />
以下即是GetPhotoAction.java的实现。
package com.struts.action; import java.io.InputStream; import com.opensymphony.xwork2.ActionSupport; import com.struts.dao.UserInfoDAO; public class GetPhotoAction extends ActionSupport{ private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String execute() throws Exception { return "success"; } public InputStream getPhoto() throws Exception{ UserInfoDAO userDetails = new UserInfoDAO(); return userDetails.getPhoto(username); } }
上段代码中getPhoto()方法的实现。此段方法放在UserInfoDAO.java中。
public InputStream getPhoto(String username) throws SQLException, IOException { conn = ConnectDB.getConn(); String sql = "select upload from userlist where username=?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); rs = pstmt.executeQuery(); if (rs.next()) { Blob bo = rs.getBlob("upload"); BufferedInputStream ins = new BufferedInputStream( bo.getBinaryStream()); int count = (int) bo.length(); byte[] bt = new byte[count]; ins.read(bt, 0, count); return new ByteArrayInputStream(bt); } return null; }
struts.xml中的代码,如下:
<action name="GetPhoto" class="com.struts.action.GetPhotoAction"> <result name="success" type="stream"> <param name="contentType">image/jpeg</param> <param name="inputName">photo</param> <param name="bufferSize">1024</param> </result> </action>
struts.xml中的<param name="inputName">photo</param> 此处的photo要与GetPhotoAction.java中getPhoto()方法中相对应。
以上即为简单的实现,还有很多不足的地方。
例如只能上传jpg格式的图片,下载的时候图片的名称也不能为中文(此处需要用到过滤器来实现即可)。
之所以写这些博客,主要是供自己以后学习的哈。
不过,也能帮助到其他人的吧。我在实现之前,一直有找资料。
发现网上有好多都是一样的,同样一段实现代码被copy来copy去的。
汗,也许是自己笨吧,别人的代码不太适合自己现在的这个框架,所以,自己多花了点时间,实现了一个哈。
如有不足之处,还望大家多多指教。共同进步哈。O(∩_∩)O~
相关文章推荐
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- struts实现的图片的上传和下载
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- Struts实现文件上传与下载
- struts+SmartUpload实现的一个简易上传下载系统
- MVC图片的上传和下载(简单实现)
- Struts+Spring+Hibernate实现上传下载
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- android之调用webservice 实现图片上传下载
- android之调用webservice 实现图片上传下载
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- Struts2.0实现上传文件进度条
- struts 实现文件上传与下载
- Retrofit 2.0 轻松实现文件/多图片上传/Json字符串
- struts实现简单的文件上传与下载
- ASP.NET2.0中全面实现文件图片上传下载处理
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
- Struts+Spring+Hibernate实现上传下载