SpringMVC笔记(五)文件的上传下载

一、SpringMVC实现文件的上传

Spring MVC 上下文中默认没有为文件上传提供了直接的支持,因 此默认情况下不能处理文件的上传工作,

如果想使用 Spring 的文件上传功能,需现在上下文中配置 CommonsMultipartResovler:

二、文件上传的步骤:
    1.加入jar包:
        commons-fileupload-1.3.1.jar
        commons-io-2.4.jar

2.在SpringMVC配置文件中配置CommonsMultipartResovler

<!-- 配置文件上传 -->
	<bean  id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	   <property name="defaultEncoding" value="utf-8"></property>
	   <property name="maxUploadSize" value="1024000"></property>
	</bean>

3.前端表单:注意:需要请求方式:POST,input类型:file,属性:enctype="multipart/form-data"

 <form action="${pageContext.request.contextPath }/testUpload" method="post" enctype="multipart/form-data">
     file:<input type="file" name="photo">
     desc:<input type="text" name="desc">
     <input type="submit" value="上传">
  </form>

4.文件上传方法的实现

	@RequestMapping("/testUpload")
	public String testUpload(HttpServletRequest request,@RequestParam(value="desc",required=false)String desc,@RequestParam("photo") CommonsMultipartFile file){
		ServletContext servletContext = request.getServletContext();
		String realPath = servletContext.getRealPath("/upload");
		File file1 = new File(realPath);
		if(!file1.exists()){
			file1.mkdir();
		}
		OutputStream out = null;
		InputStream in = null;
		//uuid_name.jpg
		String prefix = UUID.randomUUID().toString();
		prefix = prefix.replace("-","");
		String fileName = prefix+"_"+file.getOriginalFilename();
		System.out.println(fileName);
		try {
			out = new FileOutputStream(new File(realPath+"\\"+fileName));
			in = file.getInputStream();
			//创建一个缓冲区
			byte buffer[]=new byte[1024];
			//判断输入流中的数据是否已经对完
			int len=0;
			//循环将输入流读入到缓冲区中(len=in.read(buffer)>0)表示in里面还有数据
			while((len=in.read(buffer))!=-1){
				//使用FileOutPutStream输出流,将缓冲区的数据输出到指定目录文件
				out.write(buffer,0,len);
			}
		} catch (Exception   e) {
			e.printStackTrace();
		}
		//关闭输入流、输出流
		try {
			out.close();
			in.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return  "success";
	}

三、文件的下载

文件能上传就能下载

1.用ResponseEntity<byte[]> 返回值完成文件下载:

@RequestMapping(value="/testDownLoad")
	public ResponseEntity<byte[]> testDonwLoad(HttpServletRequest request) throws Exception{
		ServletContext servletContext=request.getServletContext();
		String fileName="风吹麦浪.mp3";
		String realPath = servletContext.getRealPath("/WEB-INF/"+fileName);
		InputStream in=new FileInputStream(new File(realPath));
		byte [] body=new byte[in.available()];
		in.read(body);
		MultiValueMap<String, String> headers=new HttpHeaders();
		fileName=new String(fileName.getBytes("gbk"),"iso8859-1");
		headers.set("Content-Disposition", "attachment;filename="+fileName);
		HttpStatus status=HttpStatus.OK;
		ResponseEntity<byte []> responseEntity=new ResponseEntity<>(body, headers,status);
		in.close();
		return responseEntity;
	}
时间: 2024-10-09 21:42:17

SpringMVC笔记(五)文件的上传下载的相关文章

通过scp实现文件的上传下载

一.什么是scp? Scp 是SSH自带的一个内置命令,是安全拷贝的意思,可以实现文件的上传和下载,传输速率快,    安全性高. 二.通过scp实现文件的上传下载 1.  从服务器下载文件到本地 (1)不指定身份下载 例:下载服务器172.25.254.116的/home/student/test/QQ/12.txt到本地/home/kiosk/ 不指定身份下载默认以当前登陆用户下载,如果当前登陆用户对下载文件没有读写权限将不能下载 (2)指定身份下载 例:以root身份下载服务器172.25

文件的上传下载

文件的上传下载包括文件的上传和文件的下载两部分,下面以项目的形式给出,项目的结构如下图所示: 项目的思路如下: 1.启动项目,输入地址:http://localhost:8080/fileUpload/upload/upload.jsp,进入文件上传界面upload.jsp. 2.文件上传的路径是UploadHandleServlet,创建临时保存文件路径(在项目的根目录的web-inf下面):                                   D:\ruanjian\tomc

asp.Net文件的上传下载(2) 转

Asp.net 上传.下载文件 2011-01-08 16:21:48|  分类: .NET |  标签: |举报 |字号大中小 订阅 首先我们要判断用户是否选择了要上传文件,我们可用下面这句实现: if(File1.PostedFile.ContentLength>0)  如果用户有上传的文件,则:   string name = File1.PostedFile.FileName ;//获取输入的文件名字      int i= name.LastIndexOf(".") ;

asp.net文件的上传下载

Web.Config 配置文件 <?xml version="1.0"?> <configuration> <appSettings>    <add key="FileUploadPath" value="Upload/" />    <add key="FileTypeLimit" value=".zip,.rar,.dox,.ppt,.txt,.mp3&qu

JAVAWEB之文件的上传下载

文件上传下载 文件上传: 本篇文章使用的文件上传的例子使用的都是原生技术,servelt+jdbc+fileupload插件,这也是笔者的习惯,当接触到某些从未接触过的东西时,总是喜欢用最原始的东西将他们表达出来.下面是具体的步骤,大家可以跟着我一步一步的用apache的fileupload插件来完成文件的上传下载. 1.创建一个web工程,我们这里取名为fileupload 2.导入相关jar包,,数据源使用的是apache-c3p0数据源,以及上传下载插件包,goson库,以及mysql驱动

HttpClient实现文件的上传下载

1 HTTP HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源. 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活.HttpClient 用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议. 一般的情况下我们都是使用Chrome或者

Asp.net实现MVC处理文件的上传下载功能实例教程

这篇文章主要介绍了Asp.net实现MVC处理文件的上传下载功能,比较全面而系统的对Asp.net MVC的文件上传下载功能进行了深入分析,有很好的借鉴价值,需要的朋友可以参考下 上传于下载功能是程序设计中非常常见的一个功能,在ASP.NET程序开发中有着非常广泛的应用.本文就以实例形式来实现这一功能. 一.概述 如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUploa

python使用ftplib模块实现FTP文件的上传下载

python已经默认安装了ftplib模块,用其中的FTP类可以实现FTP文件的上传下载 FTP文件上传下载 # coding:utf8 from ftplib import FTP def upload(f, remote_path, local_path): fp = open(local_path, "rb") buf_size = 1024 f.storbinary("STOR {}".format(remote_path), fp, buf_size) f

[原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------