zoukankan      html  css  js  c++  java
  • 用spring mvc 进行文件的上传与下载

      文件的上传

    servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
    		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    
    	<context:component-scan base-package="com.hanqi.controller" />
    	
    	<mvc:annotation-driven />
    	
    	<!-- 视图解析器 -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/"></property>
    		<property name="suffix" value=".jsp"></property>
    	</bean>
    	
    	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    		<!-- 上传文件的总大小, 单位是b -->
    		<property name="maxUploadSize" value="10485760"></property>
    		<!-- 上传单个文件的大小, 单位是b -->
    		<property name="maxUploadSizePerFile" value="5000000"></property>
    		<!-- 默认的字符集 -->
    		<property name="defaultEncoding" value="utf-8"></property>
    	</bean>
    	
    </beans>
    

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
    	xmlns="http://java.sun.com/xml/ns/javaee"
    
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    
    	id="WebApp_ID" version="3.0">
    
    	<servlet>
    		<servlet-name>hanqi</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
    		<!-- 启动时加载 -->
    		<!-- 当数值大于等于0的时候, 启动时加载, 数值越小, 优先级越高 -->
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    
    	<servlet-mapping>
    		<servlet-name>hanqi</servlet-name>
    
    		<url-pattern>*.form</url-pattern>
    	</servlet-mapping>
    
    </web-app>
    

    TestControllor.java

    @Controller
    @RequestMapping("/file")
    public class TestFileController {
    
            // ajax方式传递
    	@ResponseBody
    	@RequestMapping("/ajaxUpload")
    	public String ajaxUpload(
    			HttpServletRequest request, 
    			MultipartFile myfile2, 
    			String desp, 
    			Model model) {
    		StringBuffer buffer = new StringBuffer("{"success":true}");
    		String name = myfile2.getOriginalFilename();
    		
    		System.out.println(name);
    		
    		return buffer.toString();
    	}
    
    	// 跳转页面
    	@RequestMapping("/upload")
    	public String upload(HttpServletRequest request, MultipartFile myfile, String desp, Model model) {
    		// 获取服务器上的物理路径
    		String path = request.getServletContext().getRealPath("/upload");
    		String filename = myfile.getOriginalFilename();// 文件名+扩展名
    		String orgName = String.valueOf(new Date().getTime());
    		String suffixName = filename.substring(filename.lastIndexOf("."));
    		File file = new File(path + "/" + orgName + suffixName);
    		try {
    			myfile.transferTo(file);
    			model.addAttribute("msg", "上传成功 !");
    		} catch (IllegalStateException e) {
    			model.addAttribute("msg", "上传失败 !");
    			e.printStackTrace();
    		} catch (IOException e) {
    			model.addAttribute("msg", "上传失败 !");
    			e.printStackTrace();
    		}
    		return "page/success";
    	}
    }
    

    index.jsp  进行文件选择的页面

    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
    	$(function() {
    		$("#btn").click(function() {
    			var f = new FormData($("#fmData")[0]);
    			$.ajax({
    				type : "post",
    				data : f,
    				dataType : "json",
    				contentType : false,
    				processData : false,
    				url : "file/ajaxUpload.form",
    				success : function(data) {
    					if (data.success) {
    						alert("success !");
    					} else {
    						alert("fail !");
    					}
    				},
    				error : function() {
    					alert("error !");
    				}
    			});
    		});
    	});
    </script>
    
    
    <h1>文件上传(ajax)</h1>
    	<form id="fmData">
    		文件描述: <input name="desp" /><br> <input type="file"
    			name="myfile2" /><br> <input id="btn" type="button"
    			value="Submit" /><br>
    	</form>
    	<h1>文件上传(页面跳转)</h1>
    	<form action="file/upload.form" method="post"
    		enctype="multipart/form-data">
    		文件描述: <input name="desp" /><br> <input type="file" name="myfile" /><br>
    		<input type="submit" value="Submit" /><br>
    	</form>
    

    sucess.jsp

    <body>
    ${msg }
    </body>
    

    文件的下载

    TestFileControllor.java

    @Controller
    @RequestMapping("/file")
    public class TestFileController {
    	
    	@RequestMapping("/redirectIndex")
    	public String redirectIndex(HttpServletRequest request) {
    		String realPath = request.getServletContext().getRealPath("/upload");
    		File orgFile = new File(realPath);
    		File[] files = orgFile.listFiles();
    		List<String> list = new ArrayList<String>();
    		list.add(realPath);
    		for(File f : files) {
    			list.add(f.getName());
    		}
    		request.getSession().setAttribute("fileList", list);
    		return "redirect:/index.jsp";
    	}
    
    
    }
    

    index.jsp

    <a href="test.jsp">test.jsp</a><br>
    	<a href="upload/javaweb.pdf" download>下载javaweb</a><br>
    	<br>
    	<%
    		List<String> list = (List<String>) session.getAttribute("fileList");
    		if (list != null) {
    			/* 			for (String s : list) {
    							out.print("<a href='#'>" + s + "</a><br>");
    						} */
    			for (int i = 1; i < list.size(); i++) {
    				out.print("<a href='" + list.get(0) + "\" + list.get(i) + "' download>" + list.get(i) + "</a><br>");
    			}
    		} else {
    			out.print("没有相关文件 !");
    		}
    	%>
    

    test.jsp

    <body>
    <a href="file/redirectIndex.form">重定向到index.jsp</a>
    </body>
    
  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/zuo72/p/8511741.html
Copyright © 2011-2022 走看看