当前位置:  编程技术>java/j2ee

struts2单个文件上传的两种实现方式

    来源: 互联网  发布时间:2014-10-31

    本文导语:  通过2种方式模拟单个文件上传,效果如下所示 开发步骤如下: 1、新建一个web工程,导入struts2上传文件所需jar,如下图 目录结构 2、新建Action 第一种方式 代码如下:package com.ljq.action; import java.io.File; import org.apache.commons.io....

通过2种方式模拟单个文件上传,效果如下所示

开发步骤如下:

1、新建一个web工程,导入struts2上传文件所需jar,如下图

目录结构

2、新建Action

第一种方式

代码如下:

package com.ljq.action;

import java.io.File;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class UploadAction extends ActionSupport{

    private File image; //上传的文件
    private String imageFileName; //文件名称
    private String imageContentType; //文件类型

    public String execute() throws Exception {
        String realpath = ServletActionContext.getServletContext().getRealPath("/images");
        //D:apache-tomcat-6.0.18webappsstruts2_uploadimages
        System.out.println("realpath: "+realpath);
        if (image != null) {
            File savefile = new File(new File(realpath), imageFileName);
            if (!savefile.getParentFile().exists())
                savefile.getParentFile().mkdirs();
            FileUtils.copyFile(image, savefile);
            ActionContext.getContext().put("message", "文件上传成功");
        }
        return "success";
    }

    public File getImage() {
        return image;
    }

    public void setImage(File image) {
        this.image = image;
    }

    public String getImageFileName() {
        return imageFileName;
    }

    public void setImageFileName(String imageFileName) {
        this.imageFileName = imageFileName;
    }

    public String getImageContentType() {
        return imageContentType;
    }

    public void setImageContentType(String imageContentType) {
        this.imageContentType = imageContentType;
    }

   
}

第二种方式

代码如下:

package com.ljq.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class UploadAction2 extends ActionSupport {

    // 封装上传文件域的属性
    private File image;
    // 封装上传文件类型的属性
    private String imageContentType;
    // 封装上传文件名的属性
    private String imageFileName;
    // 接受依赖注入的属性
    private String savePath;

    @Override
    public String execute() {
        FileOutputStream fos = null;
        FileInputStream fis = null;
        try {
            // 建立文件输出流
            System.out.println(getSavePath());
            fos = new FileOutputStream(getSavePath() + "\" + getImageFileName());
            // 建立文件上传流
            fis = new FileInputStream(getImage());
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, len);
            }
        } catch (Exception e) {
            System.out.println("文件上传失败");
            e.printStackTrace();
        } finally {
            close(fos, fis);
        }
        return SUCCESS;
    }

    /**
     * 返回上传文件的保存位置
     *
     * @return
     */
    public String getSavePath() throws Exception{
        return ServletActionContext.getServletContext().getRealPath(savePath);
    }

    public void setSavePath(String savePath) {
        this.savePath = savePath;
    }

    public File getImage() {
        return image;
    }

    public void setImage(File image) {
        this.image = image;
    }

    public String getImageContentType() {
        return imageContentType;
    }

    public void setImageContentType(String imageContentType) {
        this.imageContentType = imageContentType;
    }

    public String getImageFileName() {
        return imageFileName;
    }

    public void setImageFileName(String imageFileName) {
        this.imageFileName = imageFileName;
    }

    private void close(FileOutputStream fos, FileInputStream fis) {
        if (fis != null) {
            try {
                fis.close();
            } catch (IOException e) {
                System.out.println("FileInputStream关闭失败");
                e.printStackTrace();
            }
        }
        if (fos != null) {
            try {
                fos.close();
            } catch (IOException e) {
                System.out.println("FileOutputStream关闭失败");
                e.printStackTrace();
            }
        }
    }

}

struts.xml配置文件

代码如下:



   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

        
   
       
            /WEB-INF/page/message.jsp
       
   

   
       
           
            /images
            /WEB-INF/page/message.jsp
            /upload/upload.jsp
           
               
                image/bmp,image/png,image/gif,image/jpeg
               
                1025956
           
           
           
       
   

上传表单页面

代码如下:




   
        文件上传

       
       
       
   

   
       
       
       
            文件:
               
       
       

       
   

显示结果页面

代码如下:





 

    上传成功

   
   
       
 

 
    上传成功!
   


   
   
   
 


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Struts2的插件 LightURL
  • 后台快速开发框架 struts2-mvc-template
  • Struts2GWTPlugin
  • Struts2Builder
  • struts2-remote-template-plugin
  • Struts2增强版 Struts+
  • Struts2 AjaxFileUpload
  • NetBeans的Struts2插件
  • Struts2 jQuery Plugin
  • Struts验证码插件 JCaptcha4Struts2
  • struts2 session 解读
  • struts2 spring整合fieldError问题
  • struts2调试插件 ConfigDebug
  • Jquery、Ajax、Struts2定时刷新功能的实现代码
  • Jquery、Ajax、Struts2完成定时刷新的方法
  • 在Struts2中如何将父类属性序列化为JSON格式的解决方法
  • java Struts2 在拦截器里的跳转问题
  • struts2+spring+hibernate分页代码[比较多]第1/7页
  • struts2+jquery实现ajax登陆实例详解
  • Struts2访问servlet分享


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3