`

struts2文件上传和下载

阅读更多
1. struts2文件上传和下载

1) Struts2文件上传
Struts2文件上传基于Struts2拦截器实现;
Struts2文件上传使用的是fileupload组件;
Form配置enctype="multipart/form-data";
Struts2获取上传文件:name(name是文件表单的name)
Struts2获取上传文件名:name+FileName;
Struts2获取上传文件的类型:name+ContentType;

2) 配置文件的大小及类型
<paramname="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param>
<paramname="maximumSize">81101</param>
<s:fielderror></s:fielderror>


2. 大文件上传

Struts2文件上传大小默认是2M;
<constantname="struts.multipart.maxSize"value="20000000"></constant>


FileUploadAction.java

package com.andrew.action;
import java.io.File;
import org.apache.commons.io.FileUtils;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport {
    private File andrew; // 文件
    private String andrewFileName;  // 文件名
    private String andrewContentType;  // 文件类型
    public File getandrew() {
        return andrew;
    }
    public void setandrew(File andrew) {
        this.andrew = andrew;
    }
    public String getandrewFileName() {
        return andrewFileName;
    }
    public void setandrewFileName(String andrewFileName) {
        this.andrewFileName = andrewFileName;
    }
    public String getandrewContentType() {
        return andrewContentType;
    }
    public void setandrewContentType(String andrewContentType) {
        this.andrewContentType = andrewContentType;
    }
    @Override
    public String execute() throws Exception {
        System.out.println("文件名:" + andrewFileName);
        System.out.println("文件类型:" + andrewContentType);
        String filePath="E:/" + andrewFileName;
        File saveFile = new File(filePath);
        FileUtils.copyFile(andrew, saveFile);
        return SUCCESS;
    }
}

struts.xml

<constant name="struts.multipart.maxSize" value="20000000"></constant>
<package name="manager" extends="struts-default">
    <action name="upload" class="com.andrew.action.FileUploadAction">
        <result name="success">/success.jsp</result>
        <result name="input">/fileupload.jsp</result>
        <interceptor-ref name="fileUpload">
            <param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param>
            <param name="maximumSize">81101</param>
        </interceptor-ref>
        <interceptor-ref name="defaultStack"></interceptor-ref>
    </action>
</package>

fileupload.jsp

<%@taglib prefix="s" uri="/struts-tags" %>
<s:fielderror></s:fielderror>
<form action="upload" method="post" enctype="multipart/form-data">
    文件:<input type="file" name="andrew"/><br/>
    <input type="submit" value="提交"/>
</form>

success.jsp

文件上传成功!

http://localhost:8080/HeadFirstStruts2Chap08/fileupload.jsp
submit
http://localhost:8080/HeadFirstStruts2Chap08/upload
文件上传成功!


3. 多文件上传

FilesUploadAction.java

package com.andrew.action;
import java.io.File;
import org.apache.commons.io.FileUtils;
import com.opensymphony.xwork2.ActionSupport;
public class FilesUploadAction extends ActionSupport {
    private File[] files; // 文件
    private String[] filesFileName; // 文件名
    private String[] filesContentType; // 文件类型
    public File[] getFiles() {
        return files;
    }
    public void setFiles(File[] files) {
        this.files = files;
    }
    public String[] getFilesFileName() {
        return filesFileName;
    }
    public void setFilesFileName(String[] filesFileName) {
        this.filesFileName = filesFileName;
    }
    public String[] getFilesContentType() {
        return filesContentType;
    }
    public void setFilesContentType(String[] filesContentType) {
        this.filesContentType = filesContentType;
    }
    @Override
    public String execute() throws Exception {
        for (int i = 0; i < files.length; i++) {
            System.out.println("文件名:" + filesFileName[i]);
            System.out.println("文件类型:" + filesContentType[i]);
            String filePath = "E:/" + filesFileName[i];
            File saveFile = new File(filePath);
            FileUtils.copyFile(files[i], saveFile);
        }
        return SUCCESS;
    }
}

struts.xml

<constant name="struts.multipart.maxSize" value="20000000"></constant>
<package name="manager" extends="struts-default">
    <action name="uploads" class="com.andrew.action.FilesUploadAction">
        <result name="success">/success.jsp</result>
        <result name="input">/filesupload.jsp</result>
    </action>
</package>

filesupload.jsp

<%@taglib prefix="s" uri="/struts-tags" %>
<s:fielderror></s:fielderror>
<form action="uploads" method="post" enctype="multipart/form-data">
    文件1:<input type="file" name="files"/><br/>
    文件2:<input type="file" name="files"/><br/>
    文件3:<input type="file" name="files"/><br/>
    <input type="submit" value="提交"/>
</form>

success.jsp

文件上传成功!

http://localhost:8080/HeadFirstStruts2Chap08/filesupload.jsp
submit
http://localhost:8080/HeadFirstStruts2Chap08/uploads
文件上传成功!


4. struts2文件下载

返回的是文件流
<paramname="contentDisposition">attachment;filename=${fileName}</param>
InputStreamgetInputStream()

FileDownloadAction.java

package com.andrew.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.opensymphony.xwork2.ActionSupport;
public class FileDownloadAction extends ActionSupport {
    private String fileName;
    public String getFileName() throws Exception {
        fileName = new String(fileName.getBytes(), "ISO8859-1");
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    public InputStream getInputStream() throws Exception {
        File file = new File("E:/1.jpg");
        this.fileName = "美女1号.jpg";
        return new FileInputStream(file);
    }
}

struts.xml

<package name="manager" extends="struts-default">
    <action name="download" class="com.andrew.action.FileDownloadAction">
        <result type="stream">
            <param name="contentDisposition">attachment;filename=${fileName}</param>
        </result>
    </action>
</package>

http://localhost:8080/HeadFirstStruts2Chap08/filedownload.jsp
文件下载
分享到:
评论

相关推荐

    struts2文件上传和下载精细讲解

    总的来说,Struts2的文件上传和下载功能通过集成Apache Commons FileUpload库,大大简化了开发者的工作,提供了友好的API和配置选项,使得处理文件上传和下载变得轻而易举。开发者只需要关注业务逻辑,无需过多关注...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    struts2 文件上传和下载

    在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。以下是对这一主题的详细阐述。 1. **文件上传** - **MultipartResolver**: 在处理文件上传时,Struts2首先需要一个MultipartResolver...

    struts2 文件上传和下载示例程序

    这个“Struts2 文件上传和下载示例程序”是一个演示如何在Struts2中实现这两个功能的实例。 文件上传是Web应用程序中的一项重要功能,允许用户从本地计算机选择文件并将其传输到服务器。在Struts2中,这一过程涉及...

    Struts2文件上传和下载教程

    ### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 **1.1 基础概念** 文件上传是Web开发中的常见需求之一。在Struts2框架中,实现文件上传主要依赖于表单的`enctype`属性设置为`multipart/form-data`。...

    struts2中的文件上传和下载示例

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传和下载。在Struts2中处理文件上传和下载是常见的需求,对于构建交互式的Web应用来说至关重要。以下将详细介绍Struts2中如何实现这两个...

    Struts2多文件上传下载实例

    在实际项目中,文件上传和下载功能是必不可少的,本实例将详细讲解如何在Struts2框架下实现单个文件及多个文件的上传与下载。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相关的Action配置,以便处理文件...

    struts2实现文件上传下载

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

    Struts2文件的上传和下载

    Struts2 文件上传和下载是Web开发中常见的情景,主要涉及到HTML表单、HTTP请求、文件处理以及服务器端的响应。以下将详细介绍Struts2框架下如何进行文件的上传和下载。 首先,理解文件上传的基本原理至关重要。当在...

    struts2 文件的上传和下载

    Struts2是一个流行的Java web框架,它为开发者提供了一种优雅的方式来构建动态、结构化的Web...希望本文能为你提供关于Struts2文件上传和下载的基本指导,进一步学习可参考给定的博文链接或其他相关文档和示例代码。

    struts2文件上传与下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...

    struts2文件上传下载

    在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...

    Struts2文件上传与下载

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...

    struts实现文件上传和下载源代码

    例如,Struts 1和Struts 2在处理文件上传和下载的方式上有显著区别,Struts 2引入了更多面向Action的API和拦截器机制。 5. **源代码分析** 在提供的压缩包文件`upload`中,可能包含了Action类、Struts配置文件、...

    struts2文件上传jar

    这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...

    Struts2文件上传下载和表单重复提交问题

    综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。

Global site tag (gtag.js) - Google Analytics