`
minzaipiao
  • 浏览: 148769 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2单文件上传和多文件上传的实现

阅读更多
一.单文件上传
添加jar包
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
在webroot创建一个文件如upload用于保存上传的文件
1.upload.jsp
 <body>
   <s:form action="upload" enctype="multipart/form-data">
   <s:file name="file" label="file"></s:file>
   <s:submit label="upload"></s:submit>
  </s:form>
 </body>


2.UploadAction.java

package com.test.upload;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
 private File file;
 private String fileFileName;
 private String fileContentType;
 public File getFile() {
  return file;
 }
 public void setFile(File file) {
  this.file = file;
 }
 public String getFileContentType() {
  return fileContentType;
 }
 public void setFileContentType(String fileContentType) {
  this.fileContentType = fileContentType;
 }
 public String getFileFileName() {
  return fileFileName;
 }
 public void setFileFileName(String fileFileName) {
  this.fileFileName = fileFileName;
 }
 @Override
 public String execute() throws Exception {
  //1.构建一个输入流
  InputStream is=new FileInputStream(file);
  //2.构建一个上传文件路径
  String root=ServletActionContext.getRequest().getRealPath("/upload");
  //3.获得一个本地文件
  File diskFile=new File(root,this.getFileFileName());
  //4.构建输出流
  OutputStream os=new FileOutputStream(diskFile);
  //5.能过字节写入输出流
  byte[] buffer=new byte[400];
  int length=0;
  while((length=is.read(buffer))>0)
  {
   os.write(buffer,0,length);
  }
  is.close();
  os.close();
  return SUCCESS;
 }
}


3.配置struts.xml
<constant name="struts.multipart.saveDir" value="c:\"></constant>
 <package name="FileuploadTest" extends="struts-default">
  <action name="upload" class="com.test.upload.UploadAction">
   <result name="success">/uploadSuccess.jsp</result>
  </action>
 </package>


二.多文件上传
1.upload.jsp页面
<body>
  <s:form action="upload" enctype="multipart/form-data">
   <s:file name="file" label="file"></s:file>
   <s:file name="file" label="file1"></s:file>
   <s:file name="file" label="file2"></s:file>
   <s:submit label="submit"></s:submit>
  </s:form>
  </body>


2.UploadAction.java
package com.test.upload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
 private List<File> file;

 private List<String> fileFileName;

 private List<String> fileContentType;

 public List<File> getFile() {
  return file;
 }

 public void setFile(List<File> file) {
  this.file = file;
 }

 public List<String> getFileContentType() {
  return fileContentType;
 }

 public void setFileContentType(List<String> fileContentType) {
  this.fileContentType = fileContentType;
 }

 public List<String> getFileFileName() {
  return fileFileName;
 }

 public void setFileFileName(List<String> fileFileName) {
  this.fileFileName = fileFileName;
 }

 @Override
 public String execute() throws Exception {
  for (int i = 0; i < file.size(); i++) {
   // 1.构建一个输入流
   InputStream is = new FileInputStream(file.get(i));
   // 2.构建一个上传文件路径
   String root = ServletActionContext.getRequest().getRealPath(
     "/upload");
   // 3.获得一个本地文件
   File diskFile = new File(root, this.getFileFileName().get(i));
   // 4.构建输出流
   OutputStream os = new FileOutputStream(diskFile);
   // 5.能过字节写入输出流
   byte[] buffer = new byte[400];
   int length = 0;
   while ((length = is.read(buffer)) > 0) {
    os.write(buffer, 0, length);
   }
   is.close();
   os.close();
  }
  return SUCCESS;
 }
}


分享到:
评论
3 楼 lgt711 2009-03-09  
顶。。。。
2 楼 despotic 2009-03-07  
用Stream会不会读写中文是乱码?
1 楼 归海长天 2009-03-07  
使用<s:file>
与用<input type="file">提交时有什么区别吗?

相关推荐

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。

    Struts2多个文件上传

    总的来说,Struts2的多文件上传通过引入Apache Commons库,提供了简洁的API和配置,使得开发者能轻松处理用户上传的多个文件。无论是使用List集合还是数组,核心原理都是相同的,只是接收上传文件的对象类型不同。...

    struts2实现多文件上传下载

    网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...

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

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

    swfuplaod+struts2实现多文件上传

    下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用Flash技术提供了一个高级的文件上传体验。它的主要特性包括: 1. **多文件选择**...

    Struts2实现文件上传

    在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的文件上传功能。 首先,我们注意到一个细节描述:“private String uploadContextType;应更正为private String ...

    struts2 实现文件批量上传

    本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...

    struts实现的文件上传下载功能

    总结起来,使用Struts实现文件上传下载涉及前端表单设计、后端处理逻辑、文件存储策略以及安全控制等多个方面。在实践中,我们还需要考虑到性能优化和用户体验提升,例如使用异步上传、进度条展示等技术。

    struts2实现多文件上传功能

    Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`&lt;constant&gt;`标签来设置`struts....

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

    ### Struts2实现文件上传(单个+多个文件上传) #### 一、单个文件上传 ...以上就是Struts2框架下单个文件上传和多个文件上传的实现过程。希望这些示例可以帮助读者理解和实现Struts2中的文件上传功能。

    struts2文件上传下载源代码

    这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`&lt;input type="file"&gt;`...

    struts 单文件上传和多文件上传带进度条

    在Struts中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...

    struts与hibernate实现文件的上传与动态下载

    通过以上步骤,你可以实现一个基于Struts2和Hibernate的文件上传与动态下载系统。这个系统能够处理用户上传的文件,将其保存到服务器,同时提供动态下载功能,允许用户根据需要下载文件。在实际开发中,还需要考虑...

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

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

    struts1实现文件上传

    综上所述,Struts1中的文件上传功能实现涉及到多个核心组件和技术点的综合运用。开发者需要对Struts1框架有深入的理解,并熟练掌握相关API的使用方法。此外,在实际开发过程中还需要注意安全性问题,比如防止恶意...

    Struts2实现文件上传功能

    下面将详细阐述如何使用Struts2来实现文件上传功能。 1. **Struts2文件上传组件** Struts2框架集成了一个名为`struts2-convention-plugin`的插件,它提供了文件上传的支持。主要依赖于`Commons FileUpload`和`...

    struts2实现的多个文件上传

    在处理文件上传时,Struts2提供了便捷的API和配置方式,使得开发人员能够轻松实现多文件上传的功能。下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传...

    在Struts 2中实现文件上传

    在 Struts 2 中实现文件上传,首先需要在 JSP 页面创建一个支持多部分数据的表单。例如,在 `FileUpload.jsp` 文件中,表单的 `method` 应设置为 `POST`,`enctype` 应设置为 `multipart/form-data`。此外,使用 `...

    Struts2实现文件的上传下载

    在Struts2中,文件上传主要依赖于`org.apache.struts2.components.FileUpload`组件,这个组件是基于Commons FileUpload库实现的,它能够处理multipart/form-data类型的HTTP请求,这是文件上传所必需的格式。...

Global site tag (gtag.js) - Google Analytics