`

springmvc文件上传

阅读更多

 

   关联jar包:

<!-- apache commons jar -->
<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>${commons-io-version}</version>
</dependency>
<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>${commons-fileupload-version}</version>
</dependency>
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>${org.apache.commons-version}</version>
</dependency>

 

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">

	<!-- 配置启动 Spring IOC 容器的 Listener -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>


	<!-- 配置字符编码 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 配置 HiddenHttpMethodFilter: 把 POST 请求转为 DELETE、PUT 请求 -->
	<filter>
		<filter-name>HiddenHttpMethodFilter</filter-name>
		<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>HiddenHttpMethodFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- 配置 DispatcherServlet -->
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

</web-app>

 

 

<!-- 设置自动扫描的包 -->
<context:component-scan base-package="com.dongly.bookstores"
	use-default-filters="false">
	<context:include-filter type="annotation"
		expression="org.springframework.stereotype.Controller" />
	<context:include-filter type="annotation"
		expression="org.springframework.web.bind.annotation.ControllerAdvice" />
</context:component-scan>

<!-- 配置视图解析器 -->
<bean
	class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/views/"></property>
	<property name="suffix" value=".jsp"></property>
</bean>

<!-- 上传文件的设置 ,maxUploadSize=-1,表示无穷大。uploadTempDir为上传的临时目录 -->
<!-- 在这个bean中的id一定要叫multipartResolver,不然会报错,在在文件上传的时候还需要两个jar文件
	   com.springsource.org.apache.commons.fileupload-1.2.0.jar 
                 com.springsource.org.apache.commons.io-1.4.0.jar  -->
<bean id="multipartResolver"
	class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 配置文件的编码方式 -->
	<property name="defaultEncoding" value="UTF-8"></property>
	<!-- 配置文件最大值  5m-->
	<property name="maxUploadSize" value="5400000"></property>
	<!-- 最大内存大小 (默认 10240)-->  
	<property name="maxInMemorySize" value="10240"></property>
	<!-- 配置临时目录 -->
	<property name="uploadTempDir" value="fileUpload/temp"></property>
</bean>

<!-- default-servlet-handler 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler, 
	它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求, 就将该请求交由 WEB 应用服务器默认的 Servlet 
	处理. 如果不是静态资源的请求,才由 DispatcherServlet 继续处理 一般 WEB 应用服务器默认的 Servlet 的名称都是 default. 
	若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定 -->
<mvc:default-servlet-handler />
<!-- 解决静态页面加载问题 -->
<mvc:annotation-driven></mvc:annotation-driven>

<!-- 可以使用 path 直接导航到 /WEB-INF/views/view-name.jsp 页面 -->
<mvc:view-controller path="/file1" view-name="/singleUploadFile"/>

 

 

 

package com.dongly.bookstores.Controller;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Controller
public class FileUploadController {

	private Logger logger = LoggerFactory.getLogger(FileUploadController.class);

	@RequestMapping("/singleUploadFile")
	public String singleUploadFile(HttpServletRequest request, HttpServletResponse response) {
		// 创建一个通用的多部分解析器
		CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getServletContext());
		 //判断 request 是否有文件上传,即多部分请求 
		if (commonsMultipartResolver.isMultipart(request)) {
			// 转换成多部分request
			MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) (request);
			// 取得request中的所有文件名
			Iterator<String> fileNames = multipartHttpServletRequest.getFileNames();
			while (fileNames.hasNext()) {
				// 取得上传文件
				MultipartFile file = multipartHttpServletRequest.getFile(fileNames.next());
				if (file != null) {
					// 取得当前上传文件的文件名称
					String fileName = file.getOriginalFilename();
					// 如果名称不为“”,说明该文件存在,否则说明该文件不存在
					if (fileName.trim() != "") {
						// 重命名上传后的文件名
						String newFileName = System.currentTimeMillis() + fileName;
						String realPath = request.getServletContext().getRealPath("/upload");
						// 定义上传路径
						String newPath = realPath + File.separator + newFileName;
						File path = new File(newPath);
						if (!path.exists()) {
							path.mkdirs();
						}
						String fileUrl = newPath.replaceAll("\\\\", "/").substring(newPath.indexOf("upload"));
						try {
							file.transferTo(path);
							logger.info("fileUrl ===>>>" + fileUrl);
							request.setAttribute("fileUrl", fileUrl);  
						} catch (IllegalStateException | IOException e) {
							e.printStackTrace();
						}
					}

				}
			}
		}
		return "fileUpload2";
	}

	@RequestMapping("/batchUploadFile")
	public String batchUploadFile(@RequestParam("file") CommonsMultipartFile files[],  
	        HttpServletRequest request, Map<String,Object> model){
		
		 List<String> filePaths = new ArrayList<String>(); 
		 for (int i = 0; i < files.length; i++) {
			 if(files[i] != null){
				 // 上传位置
				 String realPath = request.getServletContext().getRealPath("/img");
				 File path = new File(realPath);
				 if (!path.exists()) {
					 path.mkdirs();
				 }
				 //获得原始文件
				 String fileName = files[i].getOriginalFilename();  
				 logger.info("原始文件 == > " + fileName);
				 if (fileName.trim() != "") {
					 String newFileName = System.currentTimeMillis() + fileName;
					String newPath = path + File.separator + newFileName;
					String fileUrl = newPath.replaceAll("\\\\", "/").substring(newPath.indexOf("img"));
					try {
						files[i].transferTo(new File(newPath));
						filePaths.add(fileUrl);
					} catch (IllegalStateException | IOException e) {
						e.printStackTrace();
					}
				 }
			 }
		}
		model.put("fileList", filePaths);
		return "batchUploadFile";
	}

}

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

	<center>  
        <form action="singleUploadFile"  
            method="post" enctype="multipart/form-data">  
            <input type="file" name="file" />   
            <input type="submit" value="上 传" />  
        </form>  
        <h5>上传结果:</h5>  
        <img alt="暂无图片" src="${fileUrl}" />  
        <a href="${fileUrl}">下载图片</a>
    </center> 

</body>
</html>

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

	<center>  
        <form action="batchUploadFile"  
            method="post" enctype="multipart/form-data">  
            <input type="file" name="file" />  <br> 
            <input type="file" name="file" />   <br> 
            <input type="file" name="file" />   <br> 
            <input type="submit" value="上 传" />  
        </form>  
        <h5>上传结果:</h5> 
        <c:forEach items="${fileList }" var="fileName">
	        <img alt="暂无图片" src="${fileName}" />  
    	    <a href="${fileName}">下载图片</a>
        </c:forEach> 
    </center> 

</body>
</html>

 

 

分享到:
评论

相关推荐

    springMVC文件上传demo(亲测有效)

    本示例是一个完整的SpringMVC文件上传的Demo,具有实用性,且经过测试有效。下面将详细介绍这个Demo的实现原理和关键知识点。 1. **文件上传组件** SpringMVC利用`CommonsMultipartResolver`来处理文件上传请求。...

    springMVC文件上传所需jar包

    以上就是关于SpringMVC文件上传所需jar包的相关知识,这两个jar文件是实现文件上传功能的关键组件。使用它们,开发者可以方便地处理用户的文件上传请求,确保数据的安全传输和存储。在实际项目中,还需要注意文件...

    SpringMVC文件上传,多文件上传实例

    在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中实现文件上传功能,包括单个文件上传以及多个文件的批量上传。 1. **文件上传原理**: 文件上传是通过HTTP协议的POST请求来...

    SpringMVC文件上传Demo代码

    这个"SpringMVC文件上传Demo代码"是一个实例,演示了如何配置和使用SpringMVC来实现这一功能。 首先,我们需要在SpringMVC的配置文件(如`servlet-context.xml`)中启用多部分支持。这通常涉及到注册一个`...

    springMvc单文件多文件上传

    springMvc 文件上传,springMvc 支持单文件和多文件上传,

    springmvc文件上传所需jar包

    com.springsource.org.apache.commons.fileupload-1.2.0.jar com.springsource.org.apache.commons.io-1.4.0.jar

    springmvc文件上传练习项目

    本项目"springmvc文件上传练习项目"旨在提供一个实践平台,帮助开发者掌握如何使用Spring MVC处理Multipart类型的请求,实现文件和图片的上传。下面我们将深入探讨相关知识点。 1. **MultipartHttpServletRequest...

    SpringMVC文件上传案例

    这个"SpringMVC文件上传案例"展示了如何在Eclipse开发环境中实现这一过程。下面我们将详细探讨涉及的知识点。 首先,我们需要理解SpringMVC的核心概念。SpringMVC是Spring框架的一部分,它是一个用于构建Web应用的...

    SpringMVC文件上传-进度条

    ### SpringMVC文件上传与进度条技术解析 #### 一、SpringMVC文件上传概述 在Web应用开发中,文件上传是一项常见的需求。SpringMVC框架内置了对文件上传的支持,这种支持主要依赖于`commons-fileupload`组件。`...

    SpringMVC文件上传multpathfileJar包commons-fileupload-1.3.3

    `SpringMVC文件上传multpathfileJar包commons-fileupload-1.3.3`和`commons-io-2.4.jar`是实现这一功能的关键依赖库。这两个库提供了处理HTTP请求中的多部分数据(包括文件上传)的功能。 1. **Spring MVC中的文件...

    springmvc 文件上传 controller+jsp代码

    ### Spring MVC 文件上传知识点 #### 一、Spring MVC 文件上传概述 在Web开发中,文件上传是一项常见的功能需求。Spring MVC 提供了便捷的方式来处理文件上传。本篇将基于一个简单的示例,来讲解如何使用Spring ...

    SpringMVC 文件上传下载

    本示例着重于SpringMVC中的文件上传和下载功能,这对于任何需要用户交互式交换文件的应用程序都是至关重要的。 文件上传是指允许用户从他们的设备选择文件并将其发送到服务器的过程。在SpringMVC中,这通常通过使用...

    springmvc文件上传jar

    在这个场景下,"springmvc文件上传jar"通常指的是一个包含了处理文件上传所需依赖的压缩包。这个压缩包里面包含了两个重要的库:Commons-fileupload.jar和Commons-io.jar。这两个库是Apache Commons项目的一部分,为...

    springMvc文件上传完整版

    在这个"springMvc文件上传完整版"中,我们重点探讨Spring MVC如何处理文件上传,以及相关的前端技术如Ajax、pupload.js的使用。 一、Spring MVC 文件上传 1. **配置**:在Spring MVC中,我们需要配置`Multipart...

    SpringMVC文件上传下载

    SpringMVC文件上传下载 @Controller @RequestMapping(value="/file") public class FileController { @Resource private User user; @RequestMapping(value="/toUpload") public String toUpload(){ return...

    springmvc上传文件controller,vue

    在Spring MVC框架中,文件上传是一项常见的功能,用于接收客户端发送的文件数据。Vue.js作为一个前端框架,可以很好地与Spring MVC结合,实现用户界面的交互和文件上传的处理。在这个项目中,我们将深入探讨如何使用...

    SpringMVC文件上传依赖jar包

    下面是一个简单的SpringMVC文件上传示例: ```java @Controller public class UploadController { @PostMapping("/upload") public String handleFileUpload(@RequestParam("file") MultipartFile file) { if ...

    springMVC文件上传依赖包

    "springMVC文件上传依赖包"就是针对这个需求提供的一组必备组件。在这个压缩包里,我们有两个重要的文件: 1. `com.springsource.org.apache.commons.io-1.4.0.jar`: 这是Apache Commons IO库的一个版本,它提供了...

    IDEA SpringMVC 实现文件的上传下载

    在SpringMVC中,文件上传主要依赖于`CommonsMultipartResolver`,这是Spring提供的一个解析多部分请求的组件。在配置文件中,我们需要添加如下配置启用文件上传: ```xml &lt;!-- 指定最大上传文件大小 --&gt; ...

    SpringMVC文件上传和下载的工具类(完整项目)

    本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中。开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成类。

Global site tag (gtag.js) - Google Analytics