struts2上传下载

struts上传下载必须引入两个jar文件:

commons-fileupload-x.x.x.jar和comons-io-x.x.x.jar上传文件

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 org.apache.struts2.ServletActionContext;

import pojo.User;

import com.opensymphony.xwork2.ActionSupport;

public class FileUpAction extends ActionSupport{
    private static final int BUFFER_SIZE = 40*40;
    private File upload;
    private String uploadContentType;
    private String uploadFileName;
    private String savePath;
    private User user;
    private static void copy(File source, File target){
        InputStream is = null;
        OutputStream os = null;
        try{
            is = new BufferedInputStream(new FileInputStream(source), BUFFER_SIZE);
            os = new BufferedOutputStream(new FileOutputStream(target), BUFFER_SIZE);
            int len = 0;
            byte[] bs = new byte[BUFFER_SIZE];
            while ((len=is.read(bs))!=-1) {
                os.write(bs, 0, len);
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            if(is!=null){
                try{
                    is.close();
                }catch (Exception e2) {
                    // TODO: handle exception
                    e2.printStackTrace();
                }
            }
            if(os!=null){
                try{
                    os.close();
                }catch (Exception e3) {
                    // TODO: handle exception
                    e3.printStackTrace();
                }
            }
        }
    }

    @Override
    public String execute() throws Exception{
        String path = ServletActionContext.getServletContext().getRealPath(this.getSavePath())+"\\"+this.getUploadFileName();
        user.setPhone(this.uploadFileName);
        File target = new File(path);
        copy(this.upload, target);
        return SUCCESS;
    }

    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 User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

struts2中的action配置

<action name="fileUp" class="actions.FileUpAction">
            <param name="savePath">/upload</param>
            <result>/userInfo.jsp</result>
</action>

表单

<s:form action="fileUp" namespace="/" method="post" enctype="multipart/form-data">
        <s:textfield name="user.name" label="姓名" size="20"/>
        <s:file name="upload" label="形象" size="20"/>
        <s:textfield name="user.age" label="年龄" size="20"/>
        <s:radio list="#{1:‘男‘,2:‘女‘ }" name="user.sex" listKey="key" listValue="value" value="1" label="性别" cssStyle="border:0px;"/>
        <s:textfield name="user.icard" label="身份证号" size="20"/>
        <s:textfield name="user.phone" label="联系电话" size="20"/>
        <s:textfield name="user.address" label="家庭住址" size="20"/>
        <s:submit value="确定录入" align="center"/>
</s:form>

如果表单中包含一个name属性为xxx的文件域,那么在Action中可以使用如下3个属性来封装文件域信息:

File xxx 封装文件域对应的文件内容

String xxxContextType 封装文件域对应文件的文件类型

String xxxFileName 封装文件域对应文件的文件名

使用图片的时候

<img src="upload/<s:property value="uploadFileName"/>"/>




下载

import com.opensymphony.xwork2.ActionSupport;

public class DownloadAction extends ActionSupport{
    private String downPath;
    public InputStream getInputStream() throws Exception{
        return ServletActionContext.getServletContext().getResourceAsStream(downPath);
    }
    public String getDownPath() {
        return downPath;
    }
    public void setDownPath(String downPath) {
        this.downPath = downPath;
    }
    public String getDownloadFileName(){
        String downFileName = downPath.substring(7);
        try{
            downFileName = new String(downFileName.getBytes(), "ISO8859-1");
        }catch (Exception e) {
            e.printStackTrace();
            // TODO: handle exception
        }
        return downFileName;
    }

    @Override
    public String execute() throws Exception{
        return SUCCESS;
    }

struts2.xml配置

<action name="downLoad" class="actions.DownloadAction">
            <result type="stream">
                <param name="contentType">
                    application/msword,text/plain,application/vnd.ms-powerpoint,application/vnd.ms-excel
                </param>
                <param name="inputName">inputStream</param>
                <param name="contentDisposition">
                    attachment;filename="${downloadFileName}"
                </param>
                <param name="bufferSize">40960</param>
            </result>
        </action>

使用

<a href="downLoad.action?downPath=upload/123.png">下载</a>

时间: 2025-01-03 16:45:10

struts2上传下载的相关文章

Struts2 上传下载

后台代码: public String getFileName() { String fileName = this.getRequest().getParameter("fileName"); String downloadFileName = fileName; try { } catch (Exception e) { e.printStackTrace(); } return downloadFileName; } // 下载的流 public InputStream getI

Struts2 文件上传,下载,删除

本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用FileUtil上传 6.使用IOUtil上传 7.使用IOUtil上传 8.使用数组上传多个文件 9.使用List上传多个文件 ----1.基于表单的文件上传----- fileupload.jsp <body> <form action="showFile.jsp" na

用struts2实现文件的上传下载

在做B/S系统时经常会有文件上传下载的需求,现就基于struts2框架实现其功能 Struts2框架默认采用Commons-fileupload组件完成文件上传功能.? 使用Struts2框架实现文件上传功能,只需在Action中定义一个java.io.File类型的成员并为之设立setter方法,方法名要和参数名对应.? 客户端上传的文件, Struts2框架会自动将其保存在临时文件中,封装成java.io.File类对象.如果还想得到上传的文件名和文件类型,需按照如下命名规则在Action中

Struts2学习之文件上传/下载&amp;ValueStack(三)

简介 今天是学习Struts2第三天,也算struts2准备前奏告一段落,提升部分只能在后期深入了解,多看源码,多参阅资料.今天所学的知识点文件上传.下载/ValueStack&OGNL/Struts2标签 文件上传/下载 文件上传简介 a). 企业常用文件上传技术 : jspSmartUpload(主要应用 JSP model1 时代) . fileupload (Apache commons项目中一个组件). Servlet3.0 集成文件上传 Part类 b). Struts2 对文件上传

【SSH2(实践篇)】--Struts2文件上传下载实例

上篇文章又一次回顾了Struts2的运行机制,对它的运行步骤做了一步步的解析,这个解析不但再一次理清了Struts2的使用方法,而且对它的映射机制进行了深入的解析,并在最后通过一个实例来介绍了Struts2的一种使用方法,这里将做一个有关文件上传下载的实例. 一.文件上传 Struts2并没有提供文件上传的组件,所以想要实现上传的功能就必须通过第三方组件来实现,在Struts2引用的jar中包含了文件上传的组件,它是通过commons-fileupload.jar和commons-io.jar来

[JavaWeb基础] 009.Struts2 上传文件

在web开发中,我们经常遇到要把文件上传下载的功能,这篇文章旨在指导大家完成文件上传功能 1.首先我们需要一个上传文件的页面. <!--在进行文件上传时,表单提交方式一定要是post的方式, 因为文件上传时二进制文件可能会很大,还有就是enctype属性, 这个属性一定要写成multipart/form-data, 不然就会以二进制文本上传到服务器端 --> <form action="fileUpload.action" method="post"

ssh框架文件上传下载

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Author" content="BuNuo"> <meta name="Keywords" content="文件上传下载"> <meta name="

java上传下载功能的实现

上传下载是很简单的功能,但是每次用的时候还是要查,这里整理一下 前台:   <form action="xxoo.do" enctype="multipart/form-data" method="post"> <input type="file" name="file" />  <button type="submit" class="btn b

文件上传(多文件上传)/下载

通常我们会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就文件下载和多文件上传的源代码进行一下讲 文件上传 首先先创建jsp页面(用于多文件上传) <%@ page language="java" import="java.util.