`

Struts2(11):Struts2的上传下载

阅读更多

首先来看看在JSP中上传是如何做的:

从upload.jsp中选择文件上传,在result.jsp中读取上传文件的内容,注意:在form中,method必须使用post,enctype必须使用multipart/form-data

<%@ page language="java" pageEncoding="gb2312"%>
<html>
  <body>
	<form action="result.jsp" method="post" enctype="multipart/form-data">
		File:<input type="file" name="file"><br>
		<input type="submit" name="submit" value="submit">
	</form>    
  </body>
</html>

 

result.jsp

<%@ page language="java"  pageEncoding="gb2312"%>
<%@ page import="java.io.*"%>
<html>
  <body>
<%
	InputStream is = request.getInputStream();
	BufferedReader bf = new BufferedReader(new InputStreamReader(is));
	String buff = null;
	while((buff = bf.readLine()) != null)
	{
		out.print(buff+"<br>");
	}
 %>
  </body>
</html>

 

Struts2的上传下载依赖Apache common开源项目。具体是以下两个包:

commons-fileupload-1.2.2-bin.zip

下载地址:http://commons.apache.org/io/download_io.cgi

commons-io-1.4-bin.zip

下载地址:http://commons.apache.org/fileupload/download_fileupload.cgi

 

 下面使用fileupload包,编写一个servlet,接收上传的文件,并放入临时文件夹中存放

package com.test.servlet;

import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//取得WebToot目录下的upload目录
		String path = req.getRealPath("/upload");
		//设置临时文件存放目录
		factory.setRepository(new File(path));
		//设置阀值大小,低于此值的文件将直接读入内存,高于此值的将直接写入磁盘
		factory.setSizeThreshold(1024*1024);
		ServletFileUpload upload = new ServletFileUpload(factory);
		try{
			List<FileItem> list = upload.parseRequest(req);
			//取出所有的表单,如从upload.jsp页面转来的username,password,file1,file2
			for(FileItem item:list){
				//判断是否是非file类型
				if(item.isFormField()){
					String name = item.getFieldName();
					//取出表单中的值
					String value = item.getString("gbk");
					req.setAttribute(name, value);
				}else{
					//取出路径及文件名:  C:\Users\Bruce\Desktop\Jobs.txt,有的浏览器只有文件名,没有路径名
					String name = item.getName();
					int start = name.lastIndexOf("\\");
					String fileName = name.substring(start+1);
					req.setAttribute(name, fileName);
					item.write(new File(path,fileName));
				}
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
		req.getRequestDispatcher("upload/result2.jsp").forward(req,resp);
	}
}

 在web.xml文件中进行配置

<servlet>
		<servlet-name>UploadServlet</servlet-name>
		<servlet-class>com.test.servlet.UploadServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>UploadServlet</servlet-name>
		<url-pattern>/UploadServlet</url-pattern>
	</servlet-mapping>

 

分享到:
评论

相关推荐

    struts2文件上传下载源代码

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

    struts2实现文件上传下载

    本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...

    Struts2: HelloWord

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用。"HelloWorld"是学习任何新技术时的入门示例,Struts2也不例外。这个例子通常帮助开发者了解如何在...

    struts2图片上传并预览

    Struts2提供了一套完善的机制来处理文件上传,包括图片。本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件上传基础 1. 添加依赖:在项目中,你需要添加Struts2的核心库和文件上传插件。...

    struts2_uploadify带进度条的多文件上传下载

    总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...

    Struts2视频教程

    - **文件上传与下载**:Struts2内置了对文件上传的支持,可以轻松实现文件上传功能;同时也可以配置下载功能,满足文件分发的需求。 - **权限控制**:利用拦截器实现细粒度的权限控制,确保只有授权用户才能访问敏感...

    Struts2VulsTools-Struts2系列漏洞检查工具

    该工具的打开路径为:\Struts2VulsTools-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...

    struts2上传下载项目

    在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...

    K8 Struts2 Exp 20160516(Struts2综合漏洞利用工具)

    3. **后渗透操作**:一旦漏洞被成功利用,工具可能包含进一步的脚本或命令,以便进行如文件上传、下载、系统命令执行等后渗透活动。 **防范措施** 为了防止Struts2漏洞被利用,开发者和管理员应采取以下策略: 1....

    struts2资源下载,struts2资源下载

    4. **插件支持**:Struts2拥有丰富的插件库,可以实现AJAX、上传下载、国际化、数据验证等功能。例如,Struts2-dojo-plugin提供了与Dojo库的集成,使得Web应用可以使用富客户端功能。 5. **异常处理**:Struts2提供...

    struts2的struts.properties配置文件详解

    16. struts.multipart.maxSize:这是multipart请求信息的最大尺寸(文件上传用),Struts2用于限制文件上传的尺寸。 17. struts.multipart.parser:这是一个multipart请求解析器,Struts2用于处理multipart请求。 ...

    struts2的各种jar包

    11. **开发工具集成**:Eclipse、IntelliJ IDEA等IDE都有Struts2的插件,可以帮助开发者更便捷地创建和调试Struts2应用。 12. **安全性**:Struts2历史上曾出现过一些安全漏洞,如著名的CVE-2017-5638(Struts2远程...

    struts2上传和下载文件详细源码

    在这个"struts2上传和下载文件详细源码"中,我们可以深入理解Struts2如何处理文件上传和下载操作。 1. 文件上传: 在Struts2中,文件上传主要依赖于Apache的Commons FileUpload库。首先,需要在struts.xml配置文件...

    struts2文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...

    struts2文件上传下载

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

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

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

    Struts2文件上传与下载

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

    struts2下载地址

    3. **强大的拦截器机制**:Struts2提供了丰富的内置拦截器,可以方便地处理如文件上传/下载、验证等功能。 4. **国际化支持**:Struts2支持多语言的应用开发,可以通过配置实现不同语言的界面显示。 5. **丰富的标签...

    Struts2 上传和下载功能

    在Struts2中,实现文件上传和下载是常见的需求,对于用户交互和数据交换至关重要。这篇博客文章可能详细讨论了如何在Struts2框架中实现这两个功能。 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,这是...

    struts2框架下的文件上传

    Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、文件上传等。在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。...

Global site tag (gtag.js) - Google Analytics