`
zhangfeilo
  • 浏览: 399884 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

在Struts 2中实现单文件上传

阅读更多

实现原理

Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。

其次是FileUploadAction.java代码:

 

package tutorial;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.Date;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport {

     private static final long serialVersionUID = 572146812454l ;

     private static final int BUFFER_SIZE = 16 * 1024 ;

    

     private File myFile;

     private String contentType;

     private String fileName;

     private String imageFileName;

     private String caption;

    

      public void setMyFileContentType(String contentType) {

         this .contentType = contentType;

    } 

    

      public void setMyFileFileName(String fileName) {

         this .fileName = fileName;

    } 

        

      public void setMyFile(File myFile) {

         this .myFile = myFile;

    } 

    

      public String getImageFileName() {

         return imageFileName;

    } 

    

      public String getCaption() {

         return caption;

    } 

      public void setCaption(String caption) {

         this .caption = caption;

    } 

    

      private static void copy(File src, File dst) {

          try {

            InputStream in = null ;

            OutputStream out = null ;

              try {                

                in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);

                out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);

                 byte [] buffer = new byte [BUFFER_SIZE];

                  while (in.read(buffer) > 0 ) {

                    out.write(buffer);

                } 

             } finally {

                  if ( null != in) {

                    in.close();

                } 

                  if ( null != out) {

                    out.close();

                } 

            } 

         } catch (Exception e) {

            e.printStackTrace();

        } 

    } 

    

      private static String getExtention(String fileName) {

         int pos = fileName.lastIndexOf( " . " );

         return fileName.substring(pos);

    } 

    @Override

      public String execute()      {        

        imageFileName = new Date().getTime() + getExtention(fileName);

        File imageFile = new File(ServletActionContext.getServletContext().getRealPath( " /UploadImages " ) + " / " + imageFileName);

        copy(myFile, imageFile);

         return SUCCESS;

    } 

    

}
 

 

分享到:
评论

相关推荐

    在Struts 2中实现文件上传

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

    struts2实现文件上传下载

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

    struts2实现多文件上传下载

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

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

    要实现文件上传,你需要在Action类中定义一个字段,类型为`java.io.File`或`org.apache.struts2.dispatcher.multipart.FileItem`,并添加对应的`@FileUpload`注解。例如: ```java public class FileUploadAction ...

    struts2框架下的文件上传

    Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、...在实际开发中,要根据项目需求,充分考虑性能、安全性和可维护性,合理选择和实现文件上传功能。

    swfuplaod+struts2实现多文件上传

    在实现文件上传时,必须注意以下安全问题: 1. **文件类型检查**:限制上传的文件类型,防止恶意用户上传可执行文件或脚本。 2. **文件名重命名**:避免文件覆盖或路径遍历攻击,对上传的文件名进行重命名。 3. **...

    struts2 实现文件批量上传

    1. **文件上传组件**:在Struts2中,我们通常使用`Commons FileUpload`库来处理文件上传。这个库提供了处理多部分HTTP请求的能力,是Java中处理文件上传的标准库。我们需要在Struts2配置文件中引入对应的拦截器`...

    struts2实现多文件上传功能

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

    Struts2实现文件上传

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

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

    这个配置决定了在文件上传过程中,临时文件的存储位置。 3. **文件存储路径**:在Action中,使用`<param name="savePath">/upload</param>`指定保存文件的最终路径。在实际项目中,需要在Web应用的根目录下创建一个...

    Struts2单个文件上传

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

    struts2文件上传下载源代码

    描述中的链接指向了CSDN博主johnjobs的一篇文章,这篇文章详细解释了如何在Struts2中实现文件上传。博主可能讨论了以下关键点: 1. **配置Struts2 Action**:在`struts.xml`配置文件中,你需要定义一个Action,该...

    Struts2框架实现文件上传

    在Struts2中实现文件上传,可以帮助开发者处理用户从浏览器端上传的文件,例如图片、文档等。以下是关于Struts2文件上传的详细知识点: 1. **依赖库**: 实现文件上传,首先需要引入Struts2的上传插件,即`struts2...

    struts1和struts2分别实现文件上传下载功能

    文件下载在Struts2中可以通过多种方式实现,其中一种是直接在Action中处理。Action可以读取文件内容并将其设置到模型对象中,然后在JSP页面上使用`<s:property>`标签输出,这样浏览器就会根据Content-Type启动下载。...

    在struts 2中实现文件上传

    在Struts 2中实现文件上传是常见的需求,通常用于用户提交表单时上传图片、文档等数据。下面我们将深入探讨如何在Struts 2中实现这一功能。 首先,你需要在Struts 2项目中引入相关的依赖库。Struts 2的核心库包含了...

    Struts2实现多文件上传

    在Struts2中,实现多文件上传功能是常见的需求,尤其在处理用户需要上传多个文件的场景下,如上传图片、文档等。本篇文章将详细介绍如何使用Struts2来实现这一功能。 首先,我们需要理解Struts2的上传机制。在...

    Struts2实现文件的上传下载

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

    Struts2多个文件上传

    在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...

Global site tag (gtag.js) - Google Analytics