采用springmvc框架实现上传
springMVC配置文件
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.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.0.xsd">
<context:component-scan base-package="com.atguigu"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--
静态资源需要默认的servlet来处理
-->
<mvc:default-servlet-handler/>
<mvc:annotation-driven></mvc:annotation-driven>
<!--
id为固定的,只能为multipartResolver
作用:将客户端上传的file对象转换成MultipartFile对象,
设置文件解析的编码一定要与页面编码保持一致pageEncoding
xml的属性是纯文本,不能写运算符,属性
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="888888888"></property>
</bean>
</beans>
1. file.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试上传与下载</title>
</head>
<body>
<a href="down">down</a>
<form action="up" method="post" enctype="multipart/form-data">
头像 :<input type="file" name="uploadFile">
描述 :<input type="text" name="desc">
<input type="submit" value="上传">
</form>
</body>
</html>
2.UploadController
package com.atguigu.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import javax.servlet.http.HttpSession;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class UploadAndDown {
@RequestMapping("/down")
public ResponseEntity<byte[]> down(HttpSession session) throws Exception{
//获取下载文件的路径 (获取tomcat服务器的位置)
String realPath = session.getServletContext().getRealPath("img");
String finalPath = realPath+ File.separator +"1.jpg";
//创建字节输入流
InputStream in = new FileInputStream(finalPath);
//available():获取输入流所读取的文件的最大字节数
byte[] body = new byte[in.available()];
//把字节读取到数组中
in.read(body);
//设置请求头
MultiValueMap<String, String> headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment;filename=aaa.jpg");
//设置响应状态
HttpStatus statusCode = HttpStatus.OK;
in.close();
ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode);
return entity;
}
@RequestMapping(value="/up_old", method = RequestMethod.POST)
public String up_old (String desc,MultipartFile uploadFile,HttpSession session) throws Exception {
//获取上传文件的名称
String fileName = uploadFile.getOriginalFilename();
//获取上传文件的路径
String path = session.getServletContext().getRealPath("photo")+File.separator+fileName;
//获取输入流
InputStream is = uploadFile.getInputStream();
//获取输出流
OutputStream os = new FileOutputStream(new File(path));
//开始复制
int i = 0;
byte[] bytes = new byte[1024];
while((i = is.read(bytes))!=-1) {
os.write(bytes, 0, i);
}
os.close();
is.close();
return "success";
}
/** 写法二
* 使用springmvc实现上传,采用MultipartFile的transfer()
* @param desc
* @param uploadFile
* @param session
* @return
* @throws Exception
*/
@RequestMapping(value="/up", method = RequestMethod.POST)
public String up (String desc,MultipartFile uploadFile,HttpSession session) throws Exception {
//获取上传文件的名称
String fileName = uploadFile.getOriginalFilename();
//解决文件重名问题
String finalFileName = UUID.randomUUID().toString()+fileName.substring(fileName.lastIndexOf("."));
//获取上传文件的路径
String path = session.getServletContext().getRealPath("photo")+File.separator+finalFileName;
uploadFile.transferTo(new File(path));
return "success";
}
}
来源:https://www.cnblogs.com/lsk-130602/p/12240710.html