Struts文件上传

用两个包:一个是commons-fileupload-1.3.2.jar,另一个是commons-io-2.2.jar

jsp界面:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>Insert title here</title>
</head>
<body>
<form action="Shangchuan_add" method="post" enctype="multipart/form-data">
<input type="file" name="file"><br><br>
<input type="submit" value="submit" >
</form>

</body>
</html>

做Action。
三个成员:1.File file上传的文件 2.String fileFileName属性名 3.String fileContentType属性名
org.apache.commons.io.FileUtils.copyFile很简单。

sturts.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.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <constant name="struts.ui.theme" value="simple"></constant>
    <constant name="struts.multipart.maxSize" value="20971520"></constant><!-- 修改限制上传文件大小,默认是2097152 -->

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

         <action name="*_*" class="com.itnba.maya.controller.{1}Action" method="{2}">
            <result>
                {1}_{2}.jsp
            </result>
        </action>
    </package>

    <include file="example.xml"/>

    <!-- Add packages here -->

</struts>

解决重命名问题

package com.itnba.maya.controller;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.io.FileUtils;

import com.opensymphony.xwork2.ActionSupport;

public class ShangchuanAction extends ActionSupport {
    private File file;
    private String fileFileName;//上传文件的名字
    private String fileContentType;//上传文件的格式
    
    
    public File getFile() {
        return file;
    }



    public String getFileFileName() {
        return fileFileName;
    }



    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }



    public String getFileContentType() {
        return fileContentType;
    }



    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }



    public void setFile(File file) {
        this.file = file;
    }



    public String input(){
        
        return SUCCESS;
    }
    public String add() throws IOException{
        //为了防止上传文件重名,在文件前面加上当前时间
        long l=System.currentTimeMillis();
        Date date=new Date(l);
        SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMddhhmmssSSS");//精确到毫秒
        String pre=sdf.format(date);
        String fileName = pre+fileFileName;
        File destFile = new File("d:\"+fileName);//放到哪里的路径+文件名
        FileUtils.copyFile(file, destFile);
        
        return SUCCESS;
    }

}

上传完成

*************************************************************************************

多个文件同时上传,Action类里面三个成员定义成数组,用数组来接收

package com.itnba.maya.controller;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

import com.opensymphony.xwork2.ActionSupport;

public class ShangchuanduoAction extends ActionSupport {
    private File[] file;
    private String[] fileFileName;
    private String[] fileContentType;
    public File[] getFile() {
        return file;
    }
    public void setFile(File[] file) {
        this.file = file;
    }
    public String[] getFileFileName() {
        return fileFileName;
    }
    public void setFileFileName(String[] fileFileName) {
        this.fileFileName = fileFileName;
    }
    public String[] getFileContentType() {
        return fileContentType;
    }
    public void setFileContentType(String[] fileContentType) {
        this.fileContentType = fileContentType;
    }
    public String input(){
        
        return SUCCESS;
    }
    public String add() throws IOException{
        //遍历数组
        for(int i=0;i<file.length;i++){
            File item= file[i]; //取出每个File
            if(item!=null){
                File temp = new File("d:\"+fileFileName[i]);//去出每个的fileFileName
                FileUtils.copyFile(item, temp);
            }
        }
        
        return SUCCESS;
    }

}

jap页面:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>Insert title here</title>
</head>
<body>
<h1>多文件上传</h1>
<form action="Shangchuanduo_add" method="post" enctype="multipart/form-data">

附件1:<input type="file" name="file"><br>
附件2:<input type="file" name="file"><br>
附件3:<input type="file" name="file"><br>
附件4:<input type="file" name="file"><br>
附件5:<input type="file" name="file"><br><br>
<input type="submit" value="submit" >
</form>

</body>
</html>

上传成功

原文地址:https://www.cnblogs.com/hq233/p/6589419.html