`
asgab
  • 浏览: 43671 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

struts2多文件上传

    博客分类:
  • java
阅读更多
function addComponent()   
{   
  var uploadHTML=document.createElement("input");   
  uploadHTML.name="fileList";   
  uploadHTML.type="file";   
  document.getElementById("fi").appendChild(uploadHTML);   
   uploadHTML=document.createElement("br");   
  document.getElementById("fi").appendChild(uploadHTML);   
}  
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <filter> 
        <filter-name> struts-cleanup </filter-name> 
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> 
    </filter>
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


</web-app>

 

struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
	
<struts>

	<constant name="struts.custom.i18n.resources" value="globalMessages"/>
	<constant name="struts.i18n.encoding" value="GBK"/>
	<package name="upload" extends="struts-default">
	
		<action name="upload" class="lee.UploadAction">
            <interceptor-ref name="fileUpload"> 
                <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param> 
            </interceptor-ref> 
            <interceptor-ref name="defaultStack"/>    
            <param name="savePath">/upload</param>
			<result name="input">/upload.jsp</result>	
			<result>/succ.jsp</result>	
		</action>
		
	</package>
</struts>	

 

UploadAction

package lee;

import com.opensymphony.xwork2.Action;
import org.apache.struts2.ServletActionContext;
import java.util.*;
import java.io.*;


import com.opensymphony.xwork2.ActionSupport;



public class UploadAction extends ActionSupport
{
	private String title;
    private List<File> upload;
    private List<String> uploadContentType;
    private List<String> uploadFileName;


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

    private String getSavePath() throws Exception 
	{
        return ServletActionContext.getRequest().getRealPath(savePath);
    }
	
	public void setTitle(String title) {
		this.title = title; 
	}

	public void setUpload(List<File> upload) {
		this.upload = upload; 
	}

	public void setUploadContentType(List<String> uploadContentType) {
		this.uploadContentType = uploadContentType; 
	}

	public void setUploadFileName(List<String> uploadFileName) {
		this.uploadFileName = uploadFileName; 
	}

	public String getTitle() {
		return (this.title); 
	}

	public List<File> getUpload() {
		return (this.upload); 
	}

	public List<String> getUploadContentType() {
		return (this.uploadContentType); 
	}

	public List<String> getUploadFileName() {
		return (this.uploadFileName); 
	}
	@Override
    public String execute() throws Exception
	{
		List<File> files = getUpload();
		for (int i = 0 ; i < files.size() ; i++)
		{
			
			FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + getUploadFileName().get(i));
			FileInputStream fis = new FileInputStream(files.get(i));
			byte[] buffer = new byte[1024];
			int len = 0;
			while ((len = fis.read(buffer)) > 0)
			{
				fos.write(buffer , 0 , len);
			}
		}
        return SUCCESS;
    }
}

 

upload.jsp

<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
		<title>使用List上传多个文件</title>
		<SCRIPT type="text/javascript">
function addComponent()
{
  var uploadHTML=document.createElement("<input type='file' name='upload'/>");
  document.getElementById("fi").appendChild(uploadHTML);
   uploadHTML=document.createElement("<p/>");
  document.getElementById("fi").appendChild(uploadHTML);
}
</SCRIPT>
	</head>
	<body>
		<s:fielderror />
		<form onsubmit="return true;" action="upload.action" method="post"
			enctype="multipart/form-data">
			<input type="button" onclick="addComponent();" value="添加文件" />
			<span id="fi"> <input type='file' name='upload' />
				<p />
			</span>
			<input type="submit" value="上传" />
		</form>
	</body>
</html>

 

设置文件 Mimetype:response.setContentType(new MimetypesFileTypeMap().getContentType(file));

分享到:
评论

相关推荐

    Struts2多文件上传

    总结来说,Struts2多文件上传涉及到Struts2配置、Action编写、HTML表单设计以及结果处理等多个环节。通过以上步骤,你可以在Struts2应用中实现稳定可靠的多文件上传功能。不过,实际项目中还需要考虑错误处理、安全...

    struts2多文件上传显示进度

    Struts2是一个非常流行的Java Web框架,...总的来说,Struts2多文件上传并显示进度的实现需要结合前端和后端的技术,通过AJAX和XMLHttpRequest的`onprogress`事件来动态更新进度条,同时确保后端处理的高效和安全性。

    Struts2多个文件上传

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

    Struts2多文件上传下载实例

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

    struts2多文件上传和下载

    在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。这篇内容将深入讲解如何在Struts2中实现多文件的上传和下载。 1. **文件上传** 文件上传在Web应用中常常用于让用户提交各种类型的文件...

    struts2实现多文件上传下载

    文件上传比较多,多文件上传少一点 文件下载很少的,看似简单,实则不然 网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供...

    Ext+Struts2多文件上传

    通过以上步骤,我们可以利用ExtJS的用户界面和Struts2的后台处理能力,实现一个完整的多文件上传功能。这个功能不仅提高了用户体验,还简化了开发流程。在实际项目中,还可以进一步优化,例如添加进度条显示、预览...

    struts2实现多文件上传功能

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

    AjaxFileUpload Struts2 多文件上传

    本篇文章将深入讲解如何利用AjaxFileUpload与Struts2实现多文件上传,并结合jQuery进行前端交互。 首先,我们需要在项目中引入必要的库。Struts2提供了struts2-jquery-plugin,这是一个基于jQuery的插件,包含了...

Global site tag (gtag.js) - Google Analytics