Struts文件上传整合

<html:file>标签核心语法

<html:file property="对应ActionForm中的属性名称" />

此标签中最重要的就是property属性,其中保存的是上传文件的具体内容,而如果要想接收此内容,则必须依靠org.apache.struts.upload.FormFile接口完成

此接口的常用方法

NO.方法类型描述
1public byte[] getFileData() throws FileNotFoundException,IOException普通取得上传文件的大小
2public InputStream getInputStream() throws FileNotFoundException,IOException普通取得上传文件的输入流
3public int getFileSize()普通取得上传文件的大小
4public String getFileName()普通取得上传文件的名称
5public String getContentType()普通取得上传文件的类型

定义表单----upload.jsp

<%@ page language="java" pageEncoding="GBK"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<html:html lang="true">
<head>
	<html:base />
	<title>hello.jsp</title>
</head>
<body>
	<html:form action="upload.do" method="post" enctype="multipart/form-data">
		请选择要上传的文件:	<html:file property="photo"></html:file>
		<html:submit value="上传"></html:submit>
	</html:form>
</body>
</html:html>
定义ActionForm,接收上传文件----UploadForm.java

package org.lxh.struts.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

public class UploadForm extends ActionForm {

	private FormFile photo ;
	
	public FormFile getPhoto() {
		return photo;
	}

	public void setPhoto(FormFile photo) {
		this.photo = photo;
	}

	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		return null;
	}

	public void reset(ActionMapping mapping, HttpServletRequest request) {
	}
}
定义Action----UploadAction.java

package org.lxh.struts.action;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.lxh.struts.form.UploadForm;

import cn.mldn.lxh.util.IPTimeStamp;

public class UploadAction extends Action {

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		UploadForm uploadForm = (UploadForm) form;// TODO Auto-generated
		// method stub
		IPTimeStamp its = new IPTimeStamp(request.getRemoteAddr());
		String fileName = its.getIPTimeRand()
				+ "."
				+ uploadForm.getPhoto().getFileName().split("\\.")[uploadForm
						.getPhoto().getFileName().split("\\.").length - 1];
		File outFile = new File(super.getServlet().getServletContext()
				.getRealPath("/")
				+ "upload" + File.separator + fileName);
		System.out.println(fileName);
		System.out.println(outFile);
		try {
			OutputStream output = new FileOutputStream(outFile);
			InputStream input = uploadForm.getPhoto().getInputStream();
			byte data[] = new byte[1024];
			int temp = 0;
			while ((temp = input.read(data)) != -1) {
				output.write(data, 0, temp);
			}
			output.close();
		} catch (Exception e) {
			e.printStackTrace() ;
		}
		return null;
	}
}
配置struts-config.xml

<struts-config>

  <form-beans >
    <form-bean name="uploadForm" type="org.lxh.struts.form.UploadForm" />
  </form-beans>

  <global-exceptions />

  <global-forwards />

  <action-mappings >
    <action
      attribute="uploadForm"
      input="/upload.jsp"
      name="uploadForm"
      path="/upload"
      scope="request"
      type="org.lxh.struts.action.UploadAction" />
  </action-mappings>

  <message-resources parameter="org.lxh.struts.ApplicationResources" />

</struts-config>





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值