controller 层
@RestController @RequestMapping("/api/file") public class FileController { @Autowired private FileUploadService fileUploadService; @PostMapping("/upload") @ApiOperation("文件上传") public String uploadFile(MultipartFile file , HttpServletRequest request) { String linkUrl = fileUploadService.upload(file,request); return linkUrl; } }
service 层
public interface FileUploadService { /** * 上传 * * @param file * @return */ String upload(MultipartFile file, HttpServletRequest request); ; 实现类的代码
@Service public class WebFileUploadServiceImpl implements FileUploadService { @Override public String upload(MultipartFile file,HttpServletRequest request) { String path = this.filetoMultipartFile(file,request); return path; } public String filetoMultipartFile(MultipartFile file, HttpServletRequest request){ File f = null; try { InputStream ins = file.getInputStream(); f = new File(file.getOriginalFilename()); String path= inputStreamToFile(ins, f,request); return path; } catch (IOException e){ e.printStackTrace(); } return null; } public static String inputStreamToFile(InputStream ins,File file,HttpServletRequest request) { try { String strBackUrl = "http://" + request.getServerName() //服务器地址 + ":" + request.getServerPort() ; //端口号 System.out.println(strBackUrl); //项目指定存放图片地址 String s = IdUtil.snowId()+file.toString().substring(file.toString().length()-5); String filename = "E:\\upload\\src\\main\\resources\\static\\image\\"+s; OutputStream os = new FileOutputStream(filename); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); return strBackUrl+"/image/"+s; } catch (Exception e) { e.printStackTrace(); } return null; } }
生成地址 http://ip:端口/image/6078781770886840324.jpg
设置热部署5秒重启服务器就可以查看图片
spring2.x版本设置上传图片大小
#单个文件大小
spring.servlet.multipart.max-file-size = 100MB
#请求文件大小
spring.servlet.multipart.maxRequestSize= 100MB