`
舟舟同学
  • 浏览: 45503 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

struts2开发6--在struts2中实现单个文件上传

阅读更多

文件上传几乎是每个web应用程序的一个必须模块,文件上传的实现需要将表单元素属性enctype的值设置成multipart/form-data,这样使表单数据以二进制编码的方式提交。下面在struts2中提供一种上传文件的方式,供大家参考。

struts2中上传文件必须添加的的jar包:commons-fileupload-x.x.x.jar和common-io-x.x.x.jar

创建一个fileUpAction来处理要上传文件的文件,代码如下:

package cn.test.fileUp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class fileUpAction extends ActionSupport {
 private static final int BUFFER_SIZE=60*60;
 private File upload;//封装上传文件域的属性
 private String uploadContentType;//封装上传文件的类型
 private String uploadFileName;//封装上传文件名
 private String savePath;//封装文件上传的保存路径
 /**
  *
  * @param source 源文件
  * @param target 目标文件
  * @throws IOException
  */
 private static void copy(File source,File target) throws IOException
 {
  InputStream inputStream=null;
  OutputStream outputStream = null;
  try {
   inputStream=new BufferedInputStream(new FileInputStream(source));
   outputStream=new BufferedOutputStream(new FileOutputStream(target),(int)source.length());
   byte[] buffer=new byte[BUFFER_SIZE];
   int length=0;
   while((length=inputStream.read(buffer))>0)
   {
    outputStream.write(buffer,0,length);
    
   }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  if(inputStream!=null)
  {
  inputStream.close();
  }
  if(outputStream!=null)
  {
  outputStream.close();
  }
 }
 public String fileUpUI()
 {
  return "fileUpUI";
 }
 @Override
 public String execute() throws Exception {
  // TODO Auto-generated method stub
  String path1=ServletActionContext.getServletContext().getRealPath(this.getSavePath());
  File f = new File(path1);
  if(!f.exists())
  {
   f.mkdirs();
  }
  String path=path1+"\\"+this.getUploadFileName();
  System.out.println(path1);
  File target=new File(path);
  copy(this.upload,target);
  return "fsuccess";
 }
 public File getUpload() {
  return upload;
 }
 public void setUpload(File upload) {
  this.upload = upload;
 }
 public String getUploadContentType() {
  return uploadContentType;
 }
 public void setUploadContentType(String uploadContentType) {
  this.uploadContentType = uploadContentType;
 }
 
 public String getUploadFileName() {
  return uploadFileName;
 }
 public void setUploadFileName(String uploadFileName) {
  this.uploadFileName = uploadFileName;
 }
 public String getSavePath() {
  return savePath;
 }
 public void setSavePath(String savePath) {
  this.savePath = savePath;
 }
 public static int getBufferSize() {
  return BUFFER_SIZE;
 }
}
说明:在上述action中,用upload属性封装上传文件的内容,但却不能获得上传文件的类型和文件名称。因此需要使用uploadContentType来封装上传文件的类型,用uploadFileName来封装上传文件的名字,另外,配置一个savePath来封装文件保存的路径。

struts.xml文件配置如下:

 <action name="file_*" class="cn.test.fileUp.fileUpAction" method="{1}">
        <param name="savePath">/upload</param>
        <result name="fileUpUI">/WEB-INF/jsp/fileUpUI.jsp</result>
        <result name="fsuccess">/WEB-INF/jsp/fsuccess.jsp</result>
        </action>

创建fileUpUI.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:form action="file_execute" namespace="/"   enctype="multipart/form-data">
<s:file name="upload" label="文件"></s:file>
<s:submit value="确定"></s:submit>
</s:form>
</html>

创建fsuccess.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<html>

文件上传成功!
</html>

部署项目,在浏览器中输入:http://localhost:8080/MyWeb/file_fileUpUI,就可以实现上传文件功能。

0
7
分享到:
评论

相关推荐

    Struts2实现单个文件多个文件上传与下载-多个拦截器

    本项目主要展示了如何在Struts2框架下实现单个文件和多个文件的上传及下载,并且运用了多个拦截器来增强功能和安全性。 首先,让我们详细了解一下文件上传的过程。在Struts2中,文件上传主要依赖于`struts2-...

    Struts2 单个、批量文件上传 精简源码

    在Struts2中,文件上传主要依赖于Apache的Commons FileUpload库。你需要在项目中引入这个库,并在Action类中定义一个`File`或`java.io.File`类型的属性来接收上传的文件。同时,你还需要设置表单的`enctype`属性为`...

    struts2实现单个图片上传

    在本教程中,我们将深入探讨如何利用Struts2实现单个图片的上传功能,无需JavaScript的额外开发。 首先,我们需要理解图片上传的基本流程。用户通过浏览器选择一张图片,然后该图片的文件数据被发送到服务器。...

    struts2实现文件上传(单个+多个文件上传

    本文将详细介绍如何在Struts2中实现单个文件的上传。 ##### JSP 页面设计 首先,我们需要在前端JSP页面上设计一个用于文件上传的表单。为了使Struts2能够识别并处理上传文件,表单需要包含特定的属性。下面是一个...

    struts2实现单个和多个文件上传示例代码

    在本示例中,我们将深入探讨如何利用Struts2来实现单个和多个文件的上传功能。 首先,我们需要理解文件上传的基本原理。在web应用中,文件上传通常涉及到将客户端计算机上的文件通过HTTP协议传输到服务器端。Struts...

    Struts2,实现单个文件,多个文件,上传与下载,多个拦截器

    在探讨Struts2框架下如何实现单个文件、多个文件的上传与下载,以及如何配置和使用多个拦截器之前,我们首先需要理解Struts2框架的基本概念及其在Web开发中的重要性。 ### Struts2框架简介 Struts2是Apache基金会...

    Struts2单个文件上传

    在Struts2中实现单个文件上传是一项常见的任务,它允许用户通过网页选择本地文件并将其上传到服务器。这个“Struts2单个文件上传”示例提供了完整的功能,包括对上传文件大小和类型的限制,确保了服务端的安全性。 ...

    Struts2文件批量上传

    Struts2文件批量上传是Java Web开发中常见的一种功能,主要应用于网站后台处理大量用户上传的文件,如图片、文档等。Struts2是一个强大的MVC框架,它提供了丰富的功能来支持文件上传操作,包括单个文件上传和批量...

    Struts2注解开发jar

    为了使用Struts2的注解开发,开发者需要在项目的类路径下包含`struts2-convention-plugin`的jar包,并在Struts2的配置文件`struts.xml`中启用该插件。例如: ```xml &lt;struts&gt; &lt;package name="default" extends="...

    struts2文件上传源码和步骤

    在 Struts2 中,文件上传功能是通过特定的拦截器(`FileUploadInterceptor`)来实现的。以下是对标题和描述中所述知识点的详细解释: 1. **文件上传原理**: 文件上传的本质是客户端浏览器将本地文件以二进制流的...

    java struts2入门学习实例--使用struts2快速实现多个文件上传.doc

    以下是如何在Struts2项目中实现多文件上传的具体步骤: 1. **修改前端页面**: - 在前端JSP页面(如`upload.jsp`)中,需要修改表单以支持多文件上传: ```html &lt;%@ taglib uri="/struts-tags" prefix="s" %&gt; ...

    Struts2SpringUnitDemo单元测试

    这两个框架都是Java Web开发中的关键组件,Struts2负责控制层逻辑,Spring则提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,以及对数据访问层的支持。 1. **Struts2框架**:Struts2是一个开源的MVC框架,...

    struts2-portlet-2.1.2

    这个例子展示了如何在Struts2框架中创建和使用portlet,以实现更灵活和模块化的Web开发。 Struts2框架的核心特性包括: 1. **Action与Result**:Action类代表业务逻辑,Result类定义了执行Action后的视图展示。...

    struts2 单个文件

    在这个特定的场景中,我们关注的是Struts2中处理单个文件上传的功能。在描述中提到的"上传文件的后台代码"指的是服务器端处理文件上传的逻辑,这部分代码通常位于一个Action类中,例如`FileAction.java`。 在Struts...

    struts2的单个文件上传

    本文主要两种方式,一:通过 FileUtils.copyFile(file, savefile);方法复制;二:通过字节流方式复制 ; web.xml struts.xml, struts.properties, UploadAction.java, index.jsp. success.jsp

    struts2 单文件,多文件上传及拦截器实现异常处理

    在这个主题中,我们将深入探讨Struts2如何实现单文件和多文件上传,并通过拦截器来处理可能出现的异常。 首先,我们来看单文件上传。在Struts2中,使用`&lt;s:file&gt;`标签可以创建一个用于选择文件的输入字段。用户选择...

    struts2 多个文件上传 插件goouploader

    在Struts2中,传统的文件上传是通过`&lt;s:file&gt;`标签实现的,但只支持单个文件上传。Goouploader插件则提供了更强大的多文件上传功能,并且具有进度条显示、断点续传等特性。下面将详细介绍如何使用Goouploader插件...

    struts2(ssh)带进度条文件上传 demo 的jar包1

    在Struts2中,实现文件上传功能是非常常见的需求,而带进度条的文件上传则可以提供更好的用户体验,让用户了解文件上传的进度,减少用户的等待焦虑感。 Struts2的文件上传主要依赖于Apache的Commons FileUpload库。...

    Struts2.3.6的文件上传(多种)的实现

    在本文中,我们将深入探讨如何在Struts2框架下实现三种不同类型的文件上传:单个文件上传、固定数量文件上传以及不固定数量文件上传。 首先,为了实现文件上传,我们需要以下准备: 1. 获取Struts2.3.6的库文件,...

    struts2文件上传

    Struts2文件上传是Web开发中的一个重要功能,它允许用户通过网页上传本地文件到服务器。在Struts2框架中,文件上传是通过特定的插件和配置实现的,提供了便捷的方式来处理用户提交的文件数据。以下是对Struts2文件...

Global site tag (gtag.js) - Google Analytics