struts2 文件上传

struts框架上传文件,需要的两个包:commons-fileupload-1.3.2.jar  、commons-io-2.2.jar

上传文件,界面需要一个input标签  <input type="file" name="file">

form表单中除了action method 之外,还需要一个  enctype="multipart/form-data"  属性  例如:<form action="File_select" method="post" enctype="multipart/form-data">

另外需要一个Action ,

三个成员变量:  1.File类型   2.String fileFileName属性名   3.String fileContentType属性名

package com.maya.controller;

import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Random;

import org.apache.commons.io.FileUtils;

import com.opensymphony.xwork2.ActionSupport;

public class FileAction extends ActionSupport {

    
    public String input(){
        return SUCCESS;
    }
    public String select() throws IOException{
        
        Random rand=new Random();
        int n=rand.nextInt(9999);
        DecimalFormat df=new DecimalFormat("0000");
        String sss=df.format(n);            //格式化随机数,如果不够四位数,用0补齐
        
        SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");        //格式化时间
        String str=sdf.format(Calendar.getInstance().getTime());
        
        File destFile=new File("d:\"+name+"_"+str+"_"+sss+"_"+fileFileName);
        FileUtils.copyFile(file, destFile);
        return SUCCESS;
    }
    
    
    
    private File file;                //文件上传需要定义一个file 类型的变量
    private String name;        
    private String fileFileName;        //上传时,文件的名称,遵循约定,用这个名称,上传文件时自动将文件名赋值到里面      file.getName()取到的值不是原文件的名
    private String fileContentType;        //文件类型 同上,约定为这个名称传文件时自动将文件类型赋值到里面(常用作限制文件上传格式)
    public String getFileContentType() {
        return fileContentType;
    }
    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }
    public String getFileFileName() {
        return fileFileName;
    }
    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }
    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
}

上传完成,则对应的位置会有相应的文件

如果需要实现多文件上传,则File  换成 File数组即可,

public String upload() throws IOException{
        
        for(int i=0;i<file.length;i++){
            File item = file[i];
            if(item != null){
                File temp = new File("d:\"+fileFileName[i]);
                FileUtils.copyFile(item, temp);
            }
        }
        
        return SUCCESS;
    }
原文地址:https://www.cnblogs.com/zhaotiancheng/p/6589266.html