package com.om.controller.admin; import com.om.utils.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; @RestController @Api(tags = "文件上传控制类") public class UtilController { //人脸信息储存位置 @Value("${files.upload.path}") private String fileUploadPath; //临时照片存储位置 @Value("${photo.tmp}") private String tmpPhoto; @ApiOperation("文件下载接口") @GetMapping("/download") public void download(String name, HttpServletResponse response) { try { //输入流,通过输入流读取文件内容 FileInputStream fileInputStream = new FileInputStream(fileUploadPath + name); //输出流,通过输出流将文件写回浏览器,在浏览器展示图片 ServletOutputStream outputStream = response.getOutputStream(); response.setContentType("image/png"); int len = 0; byte[] bytes = new byte[1024]; while ((len = fileInputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, len); } outputStream.close(); fileInputStream.close(); } catch (Exception e) { e.printStackTrace(); } } @ApiOperation("图片上传接口") @PostMapping("/photo") public Result photo(@RequestParam("file") MultipartFile file, HttpServletRequest request, @RequestParam("id") Integer id) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile headerImage = multipartRequest.getFile("file"); String fileName = headerImage.getOriginalFilename(); //根据当前时间生成文件名 fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + "." + fileName; // 确定文件存放的路径 File dest = new File(fileUploadPath + fileName); //判断当前目录是否存在 if (!dest.exists()) { //目录不存在,需要创建 dest.mkdir(); } try { // 存储文件 headerImage.transferTo(dest); } catch (IOException e) { throw new RuntimeException("上传文件失败,服务器发生异常!", e); } System.out.println("文件名:" + fileName); return Result.succ(fileName); } @ApiOperation("视频下载接口") @GetMapping("/downloadv") public void downloadv(String name, HttpServletResponse response) { try { //输入流,通过输入流读取文件内容 FileInputStream fileInputStream = new FileInputStream(fileUploadPath + name); //输出流,通过输出流将文件写回浏览器,在浏览器展示图片 ServletOutputStream outputStream = response.getOutputStream(); response.setContentType("video/mp4"); int len; byte[] bytes = new byte[4096]; while ((len = fileInputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, len); } outputStream.close(); fileInputStream.close(); } catch (Exception e) { e.printStackTrace(); } } @ApiOperation("视频上传接口") @PostMapping("/video") public Result video(@RequestParam("file") MultipartFile file, HttpServletRequest request, @RequestParam("id") Integer id) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile headerImage = multipartRequest.getFile("file"); String fileName = headerImage.getOriginalFilename(); //根据当前时间生成文件名 fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + "." + fileName; // 确定文件存放的路径 File dest = new File(fileUploadPath + fileName); //判断当前目录是否存在 if (!dest.exists()) { //目录不存在,需要创建 dest.mkdir(); } try { // 存储文件 headerImage.transferTo(dest); } catch (IOException e) { throw new RuntimeException("上传文件失败,服务器发生异常!", e); } System.out.println("文件名:" + fileName); return Result.succ(fileName); } }