您的位置:首页 > 编程语言 > Java开发

Struts框架之文件的上传

2015-07-31 19:37 429 查看

文件上传

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  文件上传