4.3. 上传文件和HttpServletRequest
作者:互联网
@RestController public class FileUploadController ( SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/"); @PostMapping("/upload") public String upload(@RequestPart("file")
MultipartFile uploadFile, HttpServletRequest req) {
// 保存路径为项目运行目录下的uploadFile 文件夫 String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/"); String format = sdf.format(new Date()); File folder = new File(realPath + format);
// 文件夹不存在就创建一个 if(!folder.isDirectory()) { folder.mkdirs(); }
// 生成一个新的文件名
// UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写
// 标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)
String oldName = uploadFile.getOriginalFilename() ;
String newName = UUID.randomUUID().toString()
+ oldName.substring(oldName.lastindexOf("·"), oldName.length());
try {
// 保存文件 uploadFile.transferTo(new File(folder, newName));
// filePath = "http://localhost:8080/uploadFile/..."
// req.getScheme() = http
// req.getServerName() = localhost:8080
String filePath = req.getScheme() + "://" + req.getServerName() + ":"
+ req.getServerPort()+ "/uploadFile/" + format + newName; return filePath ; } catch (IOException e) { e.printStackTrace(); return "上传失败!"; }
}
在4 . 2 节中向读者介绍过静态资源位置除了classpath 下面的4 个路径之外,还有一个"/" 此这里的图片虽然是静态资源却可以直接访问到。
// 表示是否开启文件上传支持,默认为true。
spring.servlet.multipart.enabled=true
// 表示文件写入磁盘的闽值,默认为0
spring.servlet.multipart.file-size-threshold=O
// 表示上传文件的临时保存位置 spring.servlet.multipart.location=E:\\temp
// 表示上传的羊个文件的最大大小,默认为1MB spring.servlet.multipart.max-file-size=lMB
// 表示多文件上传时文件的总大小,默认为10MB spring.servlet.multipart.max-request-size=lOMB
// 表示文件是否延迟解析,默认为false spring.servlet.multipart.resolve-lazily=false
如果同时上传多个文件
String upload(@RequestPart("file") MultipartFile[] uploadFile, HttpServletRequest req)
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
HttpServletRequest 的获取方法
1.
@GetMapping("/method1") public String method1(HttpServletRequest request) { System.out.println("Request URI: " + request.getRequestURI()); return "Invoke HttpServletRequest by method param."; }
2.
@Autowired private HttpServletRequest autowiredRequest; @GetMapping("/method2") public String method2() { System.out.println("Request URI: " + autowiredRequest.getRequestURI()); return "Invoke HttpServletRequest by @Autowired."; }
3.
@GetMapping("/method3") public String method3() { HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest(); System.out.println("Request URI: " + request.getRequestURI()); return "Invoke HttpServletRequest by ServletRequestAttributes."; }
标签:HttpServletRequest,String,4.3,uploadFile,servlet,req,multipart,上传 来源: https://www.cnblogs.com/ShengLiu/p/16449281.html