struts - upload 组件

本文介绍了一个基于Struts2框架实现的文件上传功能。通过使用Struts2提供的上传组件,实现了用户界面的设计、表单验证及文件的实际上传过程。文章详细展示了upload.jsp页面、uploadForm.java表单类及uploadAction.java动作类的代码实现。

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

1. upload.jsp

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

<%@ 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>upload.jsp</title>
  </head>
 
  <body>
  <html:form action="upload.do" method="post" enctype="multipart/form-data">//文件的类型
   输入文件的名称:<html:text property="name"></html:text>
   选择上传的组件:<html:file property="pic"></html:file>//以file传输
   <html:submit value="上传"></html:submit>
  </html:form>
  </body>
</html:html>

2.uploadForm.java

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package cn.alex.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;

/**
 * MyEclipse Struts
 * Creation date: 04-09-2008
 *
 * XDoclet definition:
 * @struts.form name="uploadForm"
 */
public class UploadForm extends ActionForm {
 /*
  * Generated Methods
  */
 private FormFile pic;
 private String name;
 /**
  * Method validate
  * @param mapping
  * @param request
  * @return ActionErrors
  */
 public ActionErrors validate(ActionMapping mapping,
   HttpServletRequest request) {
  // TODO Auto-generated method stub
  return null;
 }

 /**
  * Method reset
  * @param mapping
  * @param request
  */
 public void reset(ActionMapping mapping, HttpServletRequest request) {
  // TODO Auto-generated method stub
 }

 public FormFile getPic() {
  return pic;
 }

 public void setPic(FormFile pic) {
  this.pic = pic;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
}

3.uploadAction.java

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package cn.alex.struts.action;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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.apache.struts.upload.FormFile;

import cn.alex.struts.form.UploadForm;

/**
 * MyEclipse Struts
 * Creation date: 04-09-2008
 *
 * XDoclet definition:
 * @struts.action path="/upload" name="uploadForm" input="/form/upload.jsp" scope="request" validate="true"
 */
public class UploadAction extends Action {
 /*
  * Generated Methods
  */

 /**
  * Method execute
  * @param mapping
  * @param form
  * @param request
  * @param response
  * @return ActionForward
  */
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  UploadForm uploadForm = (UploadForm) form;// TODO Auto-generated method stub
  String uploadPath = this.getServlet().getServletContext().getRealPath("/")+"upload//"+uploadForm.getName()+"."+(uploadForm.getPic().getFileName().split("//.")[1]);    //获得路径

/* String uploadPath = this.getServlet().getServletContext().getRealPath("/")+"upload//"+uploadForm.getPic().getFileName(); 不改变文件名字*/
    try {
   OutputStream out = new FileOutputStream(new File(uploadPath));//准备以流传输
   FormFile ff = uploadForm.getPic();//找到要传输的文件
   byte b[] = ff.getFileData(); //以字节数组传输
   out.write(b);
   out.close();//关闭
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值