Struts框架之文件的上传

文件上传

Struts的文件上传使用的是封装好的框架,主要使用FileUpload组件实现。
对于前台页面需要在form表单中增加属性enctype=”multipart/form-data”,可以使用struts2标签<s:file/>或者使用<input type="file"/>进行浏览选择提交。

<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
</head>
<body>
    <!-- 对于文件上传需要在form标签中增加属性enctype="multipart/form-data" -->
    <form action="fileupload.action" method="post" enctype="multipart/form-data">
        <s:file name="fileUpload.files"></s:file>
        <s:submit value="上传"></s:submit>
    </form>
</body>
</html>

编写文件上传的实体类,需要有File属性和String类型的文件名称属性,另外此类可以单文件上传也可以进行多文件上传。

package com.struts.bean;

import java.io.File;

/**
 * @TODO 文件上传实体类
 * @author Administrator
 * @date 2015年7月9日 下午9:29:19
 * @version 1.0
 */
public class FileEntity {
    private File[] files;
    private String[] filesFileName;//命名方式必须为files属性后面加上FileName
    public File[] getFiles() {
        return files;
    }
    public void setFiles(File[] files) {
        this.files = files;
    }
    public String[] getFilesFileName() {
        return filesFileName;
    }
    public void setFilesFileName(String[] filesFileName) {
        this.filesFileName = filesFileName;
    }
}

文件上传服务类,可以使用FileUtils工具类进行文件copy工作。

package com.struts.service;

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

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import com.struts.bean.FileEntity;

/**
 * @TODO 文件上传的服务类包括单文件和多文件
 * @author Administrator
 * @date 2015年7月9日 下午2:49:01
 * @version 1.0
 */
@SuppressWarnings("serial")
public class FileUpload extends ActionSupport{
    private FileEntity fileUpload;

    public FileEntity getFileUpload() {
        return fileUpload;
    }

    public void setFileUpload(FileEntity fileUpload) {
        this.fileUpload = fileUpload;
    }
    public String execute(){
        String uploadPath = ServletActionContext.getRequest().getRealPath("/");
        for(int i = 0; i < fileUpload.getFiles().length; i++){
            System.out.println(fileUpload.getFilesFileName()[i]);
            File destFile = new File(uploadPath+File.separator + fileUpload.getFilesFileName()[i]);
            try {
                FileUtils.copyFile(fileUpload.getFiles()[i], destFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return Action.SUCCESS;
    }
}

由于Struts文件上传的大小默认为2097152b,也就是2M。有两种方式可以进行文件上传的大小。
通过struts.properties配置文件中声明和使用常量配置(其实还可以通过Interfactor来进行配置)。
struts.properties配置文件:

#设置上传文件大小为10M,单位为Byte
#struts.multipart.maxSize=104857600

常量为:<constant name="struts.multipart.maxSize" value="104857600"/>
struts-file.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!-- 开发者模式 -->
    <constant name="struts.devMode" value="true"/>
    <!-- 主题模式为simple,避免使用struts标签造成标签冗余 -->
    <constant name="struts.ui.theme" value="simple"/>
    <!-- 设置上传文件的大小 -->
    <constant name="struts.multipart.maxSize" value="104857600"></constant>
    <package name="file" namespace="/" extends="struts-default">
        <!-- 配置全局result -->
        <global-results>
            <result name="success">/success.jsp</result>
        </global-results>
        <action name="file*" class="com.struts.service.FileUpload" method="{1}">
        </action>
    </package>
</struts>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值