Struts2文件的上傳實例

jopen 9年前發布 | 21K 次閱讀 Struts2 Web框架

需要的包文件:


commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.1.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar

Struts2Test.java源代碼:



package com.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class Struts2Test extends ActionSupport{

    private String picFileName;
    private File pic;

    public File getPic() {
        return pic;
    }

    public void setPic(File pic) {
        this.pic = pic;
    }

    public String getPicFileName() {
        return picFileName;
    }

    public void setPicFileName(String picFileName) {
        this.picFileName = picFileName;
    }

    public String upload() throws IOException {
        //輸出的文件路徑以及文件名java.io.File.File(String parent, String child)
        File upPic=new File(ServletActionContext.getServletContext().getRealPath("upload"),picFileName);
        FileInputStream in=null;
        FileOutputStream out=null;
        //得到父類路徑,如果不存在則創建
        upPic.getParentFile().mkdirs();
        in=new FileInputStream(pic);   //讀入文件
        out=new FileOutputStream(upPic);   //輸出文件
        int len=0;    //數據長度
        byte[] byt=new byte[1024];   //每次讀入的數據包大小
        while((len=in.read(byt))!=-1){     //如果有數據讀入則輸出
            out.write(byt, 0, len);
        }
        in.close();   //關閉讀入流
        out.close();    //關閉輸出流
        return SUCCESS;
    }
}

struts.xml源代碼:



<?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" />
<package name="default" extends="struts-default" namespace="/">
    <action name="hello" class="com.test.Struts2Test" >
        <result name="success">/success.jsp</result>
    </action>
</package> 
</struts>    

web.xml源代碼:



<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
  </filter> 
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

index.jsp源代碼:



<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <body>
    <s:form action="hello!upload" enctype="multipart/form-data" method="post">
    <!-- enctype="multipart/form-data"   此處是一個很容易忽略的盲點 -->
        <s:file name="pic" label="上傳" />
        <s:submit value="提交"/>
    </s:form>
  </body>
</html>

success.jsp源代碼:



<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
  <head>
    <base href="<%=basePath%>">
    <title>SUCCESS</title>
  </head>
  <body>
    SUCCESS! <br>
  </body>
</html>
來自:http://blog.csdn.net/zzy1078689276/article/details/47406209


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!