项目题目为车辆实时监控系统 现在要实现车辆上传GPS数据的模拟程序
请问如何实现,如何编写代码,数据集在mySQL里已经存在。需要将其传入服务端,然后打印出来
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String upload(MultipartFile file) throws Exception {
System.out.print(file.getOriginalFilename());
System.out.print(file.getSize());
File localFile = new File("/Users/jafir/Downloads/upload", file.getOriginalFilename());
if (!localFile.getParentFile().exists()) {
localFile.getParentFile().mkdirs();
}
if (!localFile.exists()) {
localFile.createNewFile();
}
file.transferTo(localFile);
String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/res/" + localFile.getName();
System.out.print("return url:" + returnUrl);
return returnUrl;
}
一般上传文件后都要返回其url,这里需要在application.yaml配置静态资源映射。
spring:
mvc:
static-path-pattern: /res/**
resources:
static-locations: classpath:/static/ , file:/Users/jafir/Downloads/upload/ #静态资源配置
映射 : classpath:/static/ xxx => /res/ xxx ; /Users/jafir/Downloads/upload/ xxx => /res/ xxx
classpath路径为相对路径,相对于jar包中class存放的目录(可以把打的jar包解压,然后就可以看到class和satic目录)
这样的话上传就会传到/Users/jafir/Downloads/upload/
下,访问的话直接localhost:9090/res/xxxx.png
就能访问
这里没有使用oss等云存储,一般情况下,最好是云存储。这里存在本地磁盘上面,是在系统文件的根目录为起点的文件目录/User/jafir/Downloads/upload
下面(当前是我mac的目录,大家可以自行配置)。
这样做的好处是:开发环境下,文件上传到固定的地方,并且不会随着项目的clean而丢失;线上环境下,文件也会存在于相应服务器的根目录为起点的文件目录下。