文件上传

本文介绍如何使用Commons-fileupload组件在Struts2框架中实现文件上传功能。通过具体的步骤展示从创建表单到配置Struts2.xml,再到编写Action进行文件处理的全过程,并附带类型检查功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下利用Commons-fileupload完成文件的上传

1.在index.jsp页面编写代码

<form action="upload.action" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
    
</form>

 2.在struts2.xml配置文件上传类型

<package name="team" extends="struts-default" namespace="/">		  
	  <!--上传-->
  <action name="upload" class="com.iteye.action.TestAction" method="upload">
	<result>/index.jsp</result>	
	  <!-- 定义允许上传的类型 -->	      
	<param name="allowedTypes">image/jpg,image/bmp</param>
  </action>
   
</package>

 3.在Action完成上传操作,这里将文件保存到upload文件夹

public class TestAction extends ActionSupport{

	private File file;
	private String fileContentType;
	private String fileFileName;
	private String allowedTypes
         public void setAllowedTypes(String allowedTypes) {
		this.allowedTypes = allowedTypes;
	}
	public void setFile(File file) {
		this.file = file;
	}
	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}
	/**
	 * 上传
	 * @throws Exception 
	 */
	public String upload() throws Exception{
		System.out.println(allowedTypes);
		String p[] = allowedTypes.split(",");
		for(int i=0;i<p.length;i++){
			if(p[i].trim().equals(fileFileName.substring(fileFileName.indexOf(".")+1))){
				System.out.println("类型错误,这是不允许上传的类型");				
				return INPUT;
			}
		}
		//类型正确执行以下代码
		InputStream in = new FileInputStream(file);
		String path = ServletActionContext.getServletContext().getRealPath("/upload");
		String newName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
		newName += fileFileName.substring(fileFileName.indexOf("."));
		File f = new File(path,newName);
		OutputStream os = new FileOutputStream(f);
		byte[] buffer = new byte[1024];
		int length = 0;
		while((length=in.read(buffer))>0){
			os.write(buffer, 0, length);
		}
		in.close();
		os.close();
		return SUCCESS;
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值