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>
相关文章推荐
- .net文件上传时实现通过文件头确认文件类型的方法
- asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输
- ASP的chr(0)文件上传漏洞原理和解决方法介绍
- javascript实现校验文件上传控件实例
- 分享20多个很棒的jQuery 文件上传插件或教程
- js jquery分别实现动态的文件上传操作按钮的添加和删除
- asp.net HTML文件上传标签
- PHP中文件上传的一个问题
- 与文件上传有关的php配置参数总结
- Serv-U中禁止某类文件上传的设置方法
- PHP 文件编程综合案例-文件上传的实现
- 在服务端进行目录建立、删除,文件上传、删除的过程的php代码
- jsp中点击图片弹出文件上传界面及预览功能的实现
- php文件上传表单摘自drupal的代码
- PHP中,文件上传
- PHP学习文件处理与文件上传 课件第1/2页
- PHP 文件上传全攻略
- zend framework文件上传功能实例代码
- 修改php.ini不生效问题解决方法(上传大于8M的文件)
- asp.net 文件上传 实时进度