• 用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>
    
  • 相关阅读:
    关于svn的安装配置开启服务过程和 eclipse安装SVN插件的方法
    java mail 接受QQ邮箱未读的邮件
    java 通过QQ账号发送邮件
    转:现实生活中怎么倒车入库
    转:现实中倒库怎么找点,现实生活倒车入库技巧图解
    转:Myeclipse——格式化代码块快捷键
    转:Excel快速输入的技巧 有哪些
    Excel 如何填充自增顺序号,自增1或者2或者n
    Excel的vlookup函数 秒速配两表数据
    Excel如何使用数据有效性
  • 原文地址:https://www.cnblogs.com/zuo72/p/8511741.html
Copyright © 2020-2023  润新知