import com.rome.backend.common.R; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.UUID; /** * 文件上传下载 */ @RestController @RequestMapping("/common") public class CommonController { /** * 上传 * @param file * @return */ @PostMapping("/upload") public R<String> upload(MultipartFile file){//参数名和前端input名一样 //file是一个临时文件,需要转存到指定位置,否则本次请求完成后临时文件会删除 //获取当前项目路径进行拼接 String url = System.getProperty("user.dir")+"\\backend\\src\\main\\resources\\backend\\images\\dish\\dishload\\"; //使用uuid重新生成文件名防止文件名重复造成覆盖,uuid+原始文件名 String uuid = UUID.randomUUID().toString(); // uuid+原始文件名 String fileName = uuid.concat(file.getOriginalFilename()); // 将文件转存 try { file.transferTo(new File(url+fileName)); } catch (IOException e) { throw new RuntimeException(e); } return R.success(fileName); } /** * 下载 * @param name * @param response */ @GetMapping("/download") public void download(String name, HttpServletResponse response){ //图片路径 String urlImg = System.getProperty("user.dir")+"\\backend\\src\\main\\resources\\backend\\images\\dish\\dishload\\".concat(name); try { //通过输入流读取文件内容 FileInputStream fileInputStream = new FileInputStream(new File(urlImg)); //输出流到浏览器 ServletOutputStream outputStream = response.getOutputStream(); //设置响应回去的是什么类型的文件 response.setContentType("image/jpeg"); int len = 0; byte[] bytes = new byte[1024]; while ((len = fileInputStream.read(bytes)) != -1){ outputStream.write(bytes,0,len); outputStream.flush(); } //关闭资源 outputStream.close(); fileInputStream.close(); } catch (Exception e) { e.printStackTrace(); } } }
年少轻狂,总以为天下事竭力有为。人事尽时,终感力不能及。