首页 > 开发 > Java > 正文

Java以struts2为例介绍如何实现图片上传

2024-07-13 09:56:05
字体:
来源:转载
供稿:网友

这篇文章主要介绍了Java struts2中如何实现图片上传的相关资料,需要的朋友可以参考下

总的说图片上传有两种方式,一种是把图片文件写到数据库中,另一种是存到服务器文件目录中。写到数据库中的图片文件需要转换成二进制流的格式,占用数据库空间比较,适合少量图片的存储,比如说,系统中某些小图标,写到数据库中的优点是比较安全,不容易被用户不小心删除。

在struts2中实现(以图片上传为例)

1.FileUpload.jsp代码清单如下:

 

 
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 
  2. <%@ taglib prefix="s" uri="/struts-tags" %> 
  3. <html> 
  4. <head> 
  5. <title>The FileUplaodDemo In Struts2</title> 
  6. </head> 
  7. <body> 
  8. <s:form action="fileUpload" method="post" enctype="multipart/form-data" namespace="/"
  9. <s:file name="myFile" label="MyFile" ></s:file> 
  10. <s:textfield name="caption" label="Caption"></s:textfield> 
  11. <s:submit label="提交"></s:submit> 
  12. </s:form> 
  13. </body> 
  14. </html> 

2.ShowUpload.jsp的功能清单如下:

 

 
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 
  2. <%@ taglib prefix="s" uri="/struts-tags" %> 
  3. <html> 
  4. <head> 
  5. <title>ShowUpload</title> 
  6. </head> 
  7. <body> 
  8. <div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" > 
  9. <img src ="UploadImages/<s:property value ="imageFileName"/> "/> 
  10. <br /> 
  11. <s:property value ="caption"/> 
  12. </div > 
  13. </body> 
  14. </html> 

3.FileUploadAction.java的代码清单如下 :

 

 
  1. package com.chris; 
  2. import java.io.*; 
  3. import java.util.Date; 
  4. import org.apache.struts2.ServletActionContext; 
  5. import com.opensymphony.xwork2.ActionSupport; 
  6. public class FileUploadAction extends ActionSupport{ 
  7. private static final long serialVersionUID = 572146812454l ; 
  8. private static final int BUFFER_SIZE = 16 * 1024 ; 
  9. //注意,文件上传时<s:file/>同时与myFile,myFileContentType,myFileFileName绑定 
  10. //所以同时要提供myFileContentType,myFileFileName的set方法 
  11. private File myFile; //上传文件 
  12. private String contentType;//上传文件类型 
  13. private String fileName; //上传文件名 
  14. private String imageFileName; 
  15. private String caption;//文件说明,与页面属性绑定 
  16. public void setMyFileContentType(String contentType) { 
  17. System.out.println("文件类型 : " + contentType); 
  18. this .contentType = contentType; 
  19. public void setMyFileFileName(String fileName) { 
  20. System.out.println("文件名称 : " + fileName); 
  21. this .fileName = fileName; 
  22. public void setMyFile(File myFile) { 
  23. this .myFile = myFile; 
  24. public String getImageFileName() { 
  25. return imageFileName; 
  26. public String getCaption() { 
  27. return caption; 
  28. public void setCaption(String caption) { 
  29. this .caption = caption; 
  30. private static void copy(File src, File dst) { 
  31. try { 
  32. InputStream in = null ; 
  33. OutputStream out = null ; 
  34. try { 
  35. in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE); 
  36. out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE); 
  37. byte [] buffer = new byte [BUFFER_SIZE]; 
  38. while (in.read(buffer) > 0 ) { 
  39. out.write(buffer); 
  40. finally { 
  41. if ( null != in) { 
  42. in.close(); 
  43. if ( null != out) { 
  44. out.close(); 
  45. catch (Exception e) { 
  46. e.printStackTrace(); 
  47. private static String getExtention(String fileName) { 
  48. int pos = fileName.lastIndexOf("."); 
  49. return fileName.substring(pos); 
  50. @Override 
  51. public String execute() { 
  52. imageFileName = new Date().getTime() + getExtention(fileName); 
  53. File imageFile = new File(ServletActionContext.getServletContext().getRealPath("UploadImages" ) + "/" + imageFileName); 
  54. copy(myFile, imageFile); 
  55. return SUCCESS; 

注:此时仅为方便实现Action所以继承ActionSupport,并Overrider execute()方法

在struts2中任何一个POJO都可以作为Action

4.struts.xml清单如下:

 

 
  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <!DOCTYPE struts PUBLIC 
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
  4. "http://struts.apache.org/dtds/struts-2.0.dtd"
  5. <struts> 
  6. <package name="example" namespace="/" extends="struts-default"
  7. <action name="fileUpload" class="com.chris.FileUploadAction"
  8. <interceptor-ref name="fileUploadStack"/> 
  9. <result>/ShowUpload.jsp</result> 
  10. </action> 
  11. </package
  12. </struts> 

5.web.xml清单如下:

 

 
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <web-app version="2.4" 
  3. xmlns="http://java.sun.com/xml/ns/j2ee" 
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
  7. <filter > 
  8. <filter-name > struts-cleanup </filter-name > 
  9. <filter-class > 
  10. org.apache.struts2.dispatcher.ActionContextCleanUp 
  11. </filter-class > 
  12. </filter > 
  13. <filter-mapping > 
  14. <filter-name > struts-cleanup </filter-name > 
  15. <url-pattern > /* </url-pattern > 
  16. </filter-mapping > 
  17. <filter> 
  18. <filter-name>struts2</filter-name> 
  19. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class
  20. </filter> 
  21. <filter-mapping> 
  22. <filter-name>struts2</filter-name> 
  23. <url-pattern>/*</url-pattern> 
  24. </filter-mapping> 
  25. <welcome-file-list> 
  26. <welcome-file>Index.jsp</welcome-file> 
  27. </welcome-file-list> 
  28. </web-app> 

以上内容是小编给大家介绍的Java struts2中如何实现图片上传的全部内容,希望大家喜欢。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表