好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java框架Struts2实现图片上传功能

struts 2 框架为处理文件上传提供了内置支持,它使用[在 html 中基于表单的文件上传]。当上传一个文件时,它通常会被存储在一个临时目录中,而且它们应该由 action 类进行处理或移动到一个永久的目录,用来确保数据不丢失。服务器在恰当的位置可能有一个安全策略,它会禁止你写到除了临时目录以外的目录,而且这个目录属于你的web应用应用程序。

通过预定义的名为文件上传的拦截器,struts 的文件上传是可能的,这个拦截器在 org.apache.struts2.interceptor.fileuploadinterceptor 类是可用的,而且是 defaultstack 的一部分。

创建视图文件

让我们开始创建需要浏览和上传选定的文件的视图。因此,让我们创建一个带有简单的 html 上传表单的 index.jsp,它允许用户上传文件:(表单的编码类型设置为multipart/form-data)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<%--

  created by intellij idea.

  user: yzjxiaoyue

  date: 2017 / 7 / 28

  time: 19 : 11

  to change this template use file | settings | file templates.

--%>

<%@ page language= "java" contenttype= "text/html; charset=utf-8"

      pageencoding= "utf-8" %>

<%@ taglib prefix= "s" uri= "/struts-tags" %>

<!doctype html public "-//w3c//dtd html 4.01 transitional//en"

"http://www.w3.org/tr/html4/loose.dtd" >

<html>

<head>

   <title>file upload</title>

</head>

<body>

<form action= "upload" method= "post" enctype= "multipart/form-data" >

   <label for = "myfile" >upload your file</label>

   <input type= "file" name= "myfile" id= "myfile" />

   <input type= "submit" value= "upload" />

</form>

</body>

</html>

之后创建success.jsp页面:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<%--

  created by intellij idea.

  user: yzjxiaoyue

  date: 2017 / 7 / 28

  time: 19 : 14

  to change this template use file | settings | file templates.

--%>

<%@ page contenttype= "text/html; charset=utf-8" %>

<%@ taglib prefix= "s" uri= "/struts-tags" %>

<html>

<head>

   <title>file upload success</title>

</head>

<body>

you have successfully uploaded <s:property value= "myfilefilename" />

</body>

</html>

创建error.jsp页面

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<%--

  created by intellij idea.

  user: yzjxiaoyue

  date: 2017 / 7 / 28

  time: 20 : 05

  to change this template use file | settings | file templates.

--%>

<%@ page contenttype= "text/html; charset=utf-8" %>

<%@ taglib prefix= "s" uri= "/struts-tags" %>

<html>

<head>

   <title>file upload error</title>

</head>

<body>

there has been an error in uploading the file.

</body>

</html>

创建 action 类

接下来让我们创建一个称为 uploadfile.java 的 java 类,它负责上传文件,并且把这个文件存储在一个安全的位置:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

package com.action;

 

import com.opensymphony.xwork2.actionsupport;

import org.apache.commons.io.fileutils;

 

import java.io.file;

import java.io.ioexception;

public class uploadfile extends actionsupport{

   private file myfile;

 

   public file getmyfile() {

     return myfile;

   }

   public void setmyfile(file myfile) {

     this .myfile = myfile;

   }

 

   private string myfilecontenttype;

 

   private string myfilefilename;

 

   private string destpath;

 

   public string execute()

   {

      /* copy file to a safe location */

     destpath = "e:\\program files\\apache-tomcat-9.0.0\\apache-tomcat-9.0.0.m22\\work\\" ;

     try {

       system.out.println( "src file name: " + myfile);

       system.out.println( "dst file name: " + myfilefilename);

       file destfile = new file(destpath, myfilefilename);

       fileutils.copyfile(myfile, destfile);

     } catch (ioexception e){

       e.printstacktrace();

       return error;

     }

     return success;

   }

 

 

   public string getmyfilecontenttype() {

     return myfilecontenttype;

   }

   public void setmyfilecontenttype(string myfilecontenttype) {

     this .myfilecontenttype = myfilecontenttype;

   }

   public string getmyfilefilename() {

     return myfilefilename;

   }

   public void setmyfilefilename(string myfilefilename) {

     this .myfilefilename = myfilefilename;

   }

}

配置文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?xml version= "1.0" encoding= "utf-8" ?>

 

<!doctype struts public

     "-//apache software foundation//dtd struts configuration 2.3//en"

     "http://struts.apache.org/dtds/struts-2.3.dtd" >

 

<struts>

   <constant name= "struts.devmode" value= "true" />

   <constant name= "struts.multipart.maxsize" value= "10000000" />

 

   <constant name= "struts.multipart.savedir" value= "/tmp" />

   <constant name= "struts.custom.i18n.resources" value= "struts" ></constant>

   < package name= "default" namespace= "/" extends = "struts-default" >

     <action name= "upload" class = "com.action.uploadfile" >

       <!--<interceptor-ref name= "basicstack" />-->

       <interceptor-ref name= "defaultstack" />

       <interceptor-ref name= "fileupload" >

         <param name= "allowedtypes" >image/jpeg,image/jpg,image/gif</param>

       </interceptor-ref>

       <result name= "success" >/success.jsp</result>

       <result name= "error" >/error.jsp</result>

     </action>

   </ package >

</struts>

界面截图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/yzj_xiaoyue/article/details/76284279

查看更多关于Java框架Struts2实现图片上传功能的详细内容...

  阅读:43次