其他分享
首页 > 其他分享> > 4.3. 上传文件和HttpServletRequest

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