后端代码:
/*** 文件上传返回url*/&#64;ResponseBody&#64;RequestMapping("/upload")public String uploadPicture(&#64;RequestParam(value&#61;"file",required&#61;false) MultipartFile file, HttpServletRequest request){Map map &#61; new HashMap<>();File targetFile&#61;null;String url&#61;"";//返回存储路径int code&#61;1;System.out.println(file);String fileName&#61;file.getOriginalFilename();//获取文件名加后缀if(fileName!&#61;null&&fileName!&#61;""){String returnUrl &#61; request.getScheme() &#43; "://" &#43; request.getServerName() &#43; ":" &#43; request.getServerPort() &#43; request.getContextPath() &#43;"/upload/imgs/";//存储路径String path &#61; request.getSession().getServletContext().getRealPath("upload/imgs"); //文件存储位置String fileF &#61; fileName.substring(fileName.lastIndexOf("."), fileName.length());//文件后缀fileName&#61;new Date().getTime()&#43;"_"&#43;new Random().nextInt(1000)&#43;fileF;//新的文件名//先判断文件是否存在SimpleDateFormat sdf &#61; new SimpleDateFormat("yyyyMMdd");String fileAdd &#61; sdf.format(new Date());//获取文件夹路径File file1 &#61;new File(path&#43;"/"&#43;fileAdd);//如果文件夹不存在则创建if(!file1 .exists() && !file1 .isDirectory()){file1 .mkdir();}//将图片存入文件夹targetFile &#61; new File(file1, fileName);try {//将上传的文件写到服务器上指定的文件。file.transferTo(targetFile);url&#61;returnUrl&#43;fileAdd&#43;"/"&#43;fileName;map.put("url", url);map.put("fileName", fileName);return Result.toResult(ResultCode.SUCCESS, map);} catch (Exception e) {e.printStackTrace();return Result.toResult(ResultCode.SYSTEM_INNER_ERROR);}}return Result.toResult(ResultCode.SYSTEM_INNER_ERROR);}
注&#xff1a;本地需手动新建/upload/imgs文件夹
前端代码&#xff1a;
此时项目完成。
&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
当打包为jar包时&#xff0c;文件是保存在服务器中的。由于对于linux服务器来说&#xff0c;是不可以直接读取系统文件的。
所有在此需手动创建一个文件流来读取图片显示出来。
/***author:zhaohe* IO流读取图片* &#64;param imgUrl 图片url*/
&#64;RequestMapping(value &#61; "/showImg",method &#61; RequestMethod.GET)
public void IoReadImage(String imgUrl, HttpServletResponse response)throws IOException {fileService.IoReadImage(imgUrl,response);
}private String GOODS_IMG_PATH &#61; "/home/installPackage/imgs/";public void IoReadImage(String imgUrl, HttpServletResponse response) throws IOException {ServletOutputStream out &#61; null;FileInputStream ips &#61; null;String upload &#61; null;try {//获取图片存放路径String imgPath &#61; GOODS_IMG_PATH &#43; "/" &#43; imgUrl;ips &#61; new FileInputStream(new File(imgPath));String type &#61; imgUrl.substring(imgUrl.indexOf(".")&#43;1);if (type.equals("png")){response.setContentType("image/png");}if (type.equals("jpeg")){response.setContentType("image/jpeg");}out &#61; response.getOutputStream();//读取文件流int len &#61; 0;byte[] buffer &#61; new byte[1024 * 10];while ((len &#61; ips.read(buffer)) !&#61; -1){out.write(buffer,0,len);}out.flush();}catch (Exception e){e.printStackTrace();}finally {out.close();ips.close();}}