`
floger
  • 浏览: 213892 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件上传struts2 实现文件上传功能(4)

阅读更多

2、多文件上传
修改action

    private List<File> file;
    
private List<String> fileFileName;
    
private List<String> fileContentType;
    public String execute() throws Exception {
        
for (int i = 0; i < file.size(); ++i) {
            InputStream is 
= new FileInputStream(file.get(i));
            String root 
= ServletActionContext.getRequest().getRealPath(
                    
"/upload");
            File destFile 
= new File(root, this.getFileFileName().get(i));
            OutputStream os 
= new FileOutputStream(destFile);
            
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;
    }
修改upload3.jsp
                <tr>
                    
<td>
                        file1
                    
</td>
                    
<td>
                        
<s:file name="file"></s:file>
                    
</td>
                
</tr>
                
<tr>
                    
<td>
                        file2
                    
</td>
                    
<td>
                        
<s:file name="file"></s:file>
                    
</td>
                
</tr>
                
<tr>
                    
<td>
                        file3
                    
</td>
                    
<td>
                        
<s:file name="file"></s:file>
                    
</td>
                
</tr>
结果:




3、任意数量文件上传 
在多文件上传的基础上修改upload3.jsp
        <script type="text/javascript">
        
function addMore()
        
{
            
var td = document.getElementById("more");
            
var br = document.createElement("br");
            
var input = document.createElement("input");
            
var button = document.createElement("input");
            input.type 
= "file";
            input.name 
= "file";
            button.type 
= "button";
            button.value 
= "Remove";
            button.onclick 
= function()
            
{
                td.removeChild(br);
                td.removeChild(input);
                td.removeChild(button);
            }

            td.appendChild(br);
            td.appendChild(input);
            td.appendChild(button);
        }

    
</script>
                <tr>
                    
<td>
                        file1
                    
</td>
                    
<td id="more">
                        
<s:file name="file"></s:file>
                        
<input type="button" value="Add More.." onclick="addMore()">
                    
</td>
                
</tr>

结果:


(四)文件上传类型、大小的限制
使用struts的拦截器,struts2-core-2.1.6.jar/org.apache.struts2.interceptor.FileUploadInterceptor.class的源码中我们可以看到:
public class FileUploadInterceptor extends AbstractInterceptor {

    private static final long serialVersionUID = -4764627478894962478L;

    protected static final Logger LOG = LoggerFactory.getLogger(FileUploadInterceptor.class);
    private static final String DEFAULT_MESSAGE = "no.message.found";

    protected boolean useActionMessageBundle;

    protected Long maximumSize;
    protected Set
<String> allowedTypesSet = Collections.emptySet();
    protected Set
<String> allowedExtensionsSet = Collections.emptySet();
所以我们只需的struts.xml中配置它的属性allowedTypesSet即可。在action节点中修改拦截器(默认的拦截器中已经有fileUpload拦截器,我们必须提取出来进行参数设置,然后在加上默认的拦截器)。
        <action name="upload" class="com.test.action.UploadAction">
            
<result name="success">/upload/result3.jsp</result>
            
<result name="input">/upload/upload3.jsp</result>
            
<interceptor-ref name="fileUpload">
                
<param name="maximumSize">409600</param>
                
<param name="allowedTypes">
                    application/vnd.ms-powerpoint
                
</param>
            
</interceptor-ref>
            
<interceptor-ref name="defaultStack"></interceptor-ref>
        
</action>
其中<param name="allowedTypes">application/vnd.ms-powerpoint</param>allowedTypes的值可在C:\Tomcat 6.0\conf的web.xml文件中查找。

报错信息:
严重: Content-Type not allowed: file "intrl.txt" "upload__138d8aca_120b73e9cf4__8000_00000002.tmp" text/plain


(五)文件的下载
download.jsp
        <s:a href="/MyStruts2/download.action">download</s:a>
DownloadAction.java
 1package com.test.action;
 2
 3import java.io.InputStream;
 4
 5import org.apache.struts2.ServletActionContext;
 6
 7import com.opensymphony.xwork2.ActionSupport;
 8
 9public class DownloadAction extends ActionSupport {
10    public InputStream getDownloadFile() {
11        return ServletActionContext.getServletContext().getResourceAsStream(
12                "/upload/intrl.ppt");
13    }

14
15    @Override
16    public String execute() throws Exception {
17        return SUCCESS;
18    }

19}

20
web.xml中action配置
        <action name="download"
            class
="com.test.action.DownloadAction">
            
<result name="success" type="stream">
                
<param name="contentType">
                    application/vnd.ms-powerpoint
                
</param>
                
<param name="contentDisposition">
                    filename="intrl.ppt"
                
</param>
                
<param name="inputName">downloadFile</param>
            
</result>
        
</action>
结果:

分享到:
评论

相关推荐

    struts2实现文件上传下载

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

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

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

    struts2实现多文件上传功能

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

    struts2实现多文件上传下载

    需求 1.能够对多个文件进行上传(可以选择上传文件个...提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载 随意文件 java Struts2 单例 配置 动态读取 李顺利

    Struts2实现文件上传功能

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

    使用struts2实现的文件上传功能

    在Struts2框架中实现文件上传功能是一项常见的任务,这通常涉及到用户通过表单提交文件,服务器端接收并处理这些文件。在这个场景中,我们将探讨如何使用Struts2来实现这一功能。 首先,你需要在项目中引入Struts2...

    struts2 实现文件批量上传

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

    swfuplaod+struts2实现多文件上传

    结合Struts2,一个流行的Java Web框架,可以构建出高效、用户友好的文件上传功能。下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用...

    Struts2实现文件的上传下载

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

    Struts2实现文件上传

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

    Struts2多个文件上传

    首先,要实现Struts2的文件上传,必须引入必要的依赖库。主要需要两个Apache Commons库:`commons-fileupload-1.2.2.jar`和`commons-io-2.0.1.jar`。这两个库提供了文件上传的基础功能,使得Struts2能够处理`...

    struts2文件上传下载源代码

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

    Extjs4文件上传,后台struts2

    在本文中,我们将深入探讨如何使用ExtJS 4与Struts2框架实现文件上传功能。ExtJS是一个强大的JavaScript库,提供了丰富的用户界面组件,而Struts2是Java Web开发中的一个MVC框架,用于处理后端业务逻辑。下面,我们...

    Struts+swfupload实现文件上传功能

    Struts和SwfUpload是两种在Web开发中用于构建强大功能的应用工具,它们结合使用可以实现高效的文件上传功能。在本文中,我们将深入探讨这两个组件以及如何将它们整合以实现文件上传。 首先,Struts是一个基于MVC...

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

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

    在Struts 2中实现文件上传

    Struts 2 文件上传是基于 Apache Commons FileUpload 组件实现的,这个组件处理 HTTP 请求中的多部分数据,将上传的文件保存到...通过这种方式,Struts 2 提供了一种简单、直观的方式来处理 Web 应用中的文件上传功能。

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

    Struts1和Struts2是两个非常著名的Java Web框架,它们都提供了处理文件上传和下载的功能,但实现方式有所不同。本文将深入探讨这两个框架在文件操作方面的具体实现。 首先,让我们了解一下Struts1中的文件上传功能...

    struts2实现的多个文件上传

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

    基于Struts2的文件上传下载功能的完整源代码。

    在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...

    struts1实现文件上传

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

Global site tag (gtag.js) - Google Analytics