本文主要是介绍瑞吉外卖:异常处理与文件操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 全局异常处理器
- 文件上传
- 文件下载
全局异常处理器
在程序中使用异常处理器进行全局异常捕获,此处主要处理SQLIntegrityConstraintViolationException异常,在reggie->common里面新建一个全局的异常捕获类 GlobalExceptionHandler.java,加注解@ControllerAdvice,拦截两种类
创建方法exceptionHandler,加注解@ExceptionHandler(SQLIntegrityConstraintViolationException.class)表示此方法用于处理该种异常。
文件上传
上传的 form 表单如下
服务端接收时通常会使用Apache提供的 commons-fileupload 和 commons-io 两个组件,Spring基于这两个组件做了封装,只需在Controller的方法中声明一个MultipartFile的参数即可使用。
方法实现如下
文件下载
通过浏览器进行文件下载有两种形式:下载到磁盘或通过浏览器打开。
文件上传成功之后回调handleAvatarSuccess方法,获取图片在服务器上的位置。
然后再通过img标签展示,请求拼接好的 imageUrl,访问服务器的download。
文件下载的后端代码如下
/*** 文件下载,图片回显浏览器*/@GetMapping("/download")public void download(String name, HttpServletResponse response){try {//输入流,通过输入流读取文件内容FileInputStream fileInputStream = new FileInputStream(new File(basePath+name));//输出流,通过输出流将文件写回浏览器,在浏览器展示图片ServletOutputStream outputStream = response.getOutputStream();response.setContentType("image/jpeg");//设置响应的文件类型int len = 0;byte[] bytes = new byte[1024];while ((len = fileInputStream.read(bytes)) != -1){//用while循环一直写,写到-1证明写完了outputStream.write(bytes,0,len);outputStream.flush();}//关闭资源outputStream.close();fileInputStream.close();} catch (Exception e) {e.printStackTrace();}}
这篇关于瑞吉外卖:异常处理与文件操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!