依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<!--代表打包时不会打包它-->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
<!--jackson依赖-->
<!--Jackson包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<!--文件上传依赖-->
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
在spring配置文件里面加上
<!--配置文件解析器-->
<!--这里id必须为multipartResolver,不然会有坑-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--配置文件上传最大尺寸-->
<property name="maxUploadSize" value="5242880"></property>
</bean>
@RestController
@RequestMapping("/upload")
public class UploadController {
@RequestMapping("/imgUpload")
public String imgUpload(MultipartFile img, HttpServletRequest request){
//通过request获取上传的真实路径
// 因为在你项目中可能你手动创建file文件了,但是由于file文件里面没有任何东西,所以在编译后的文件里面(target文件)可能没有file文件
String realPath = request.getSession().getServletContext().getRealPath("file"+ UploadUtils.getDirs());
System.out.println(realPath);
File file = new File(realPath);
//判断file文件夹是否真实存在
if(!file.exists()){
//不存在,创建file
file.mkdirs();
}
//获取客户端上传的文件名
String originalFilename = img.getOriginalFilename();
System.out.println(originalFilename);
System.out.println("-------"+file.exists());
try {
//将客户端上传的文件写入到file文件夹当中
img.transferTo(new File(file,UploadUtils.getFileName(originalFilename)));
} catch (IOException e) {
e.printStackTrace();
System.out.println("上传失败");
}
return "{\"msg\":\"上传成功\"}";
}
}
package com.zhang.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.UUID;
public class UploadUtils {
/*获取目录*/
public static String getDirs(){
long currentTime = System.currentTimeMillis();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMdd");
Date date = new Date(currentTime);
return "/"+formatter.format(date);
}
/*获取文件名*/
public static String getFileName(String filename){
int i = filename.lastIndexOf(".");
if(i==-1){
return UUID.randomUUID().toString().replace("-","").toLowerCase();
}
return UUID.randomUUID().toString().replace("-","").toLowerCase()+filename.substring(i);
}
}