基于SpringBoot图书馆管理系统—图片上传问题

写了一个图书馆管理系统,每次上传图片后都需要手动打开idea,前端才能读取到新的图片
应该怎么解决?

img

上传后前端查询信息,读取不到图片

img

手动打开idea,图片出现了

img

再次返回前端获取书籍信息,成功输出图片

img

上传图片具体代码如下

@Override
    public String addGoods(Goods goods, String act, HttpServletResponse response) throws IOException {
        if (act.equals("add")){
            String bname = goods.getBname();
            if(goodsRepository.booksIsExist(bname)>0){
                response.setContentType("text/html;charset=utf-8");
                PrintWriter out = response.getWriter();
                out.print("");
                out.flush();
            }
            else{
                MultipartFile myfile = goods.getFileName();
                //如果选择了上传文件,将文件上传到指定的目录images
                if(myfile.getSize()>0) {
                    //获得上传文件原名
                    //上传文件路径(开发环境)
                    String path = "/Users/hopperrose/Documents/demo/src/main/resources/static/images";
                    //获得上传文件原名
                    String fileName = myfile.getOriginalFilename();
                    //对文件重命名
                    String fileNewName = MyUtil.getNewFileName(fileName);
                    File filePath = new File(path + File.separator + fileNewName);
                    //如果文件目录不存在,创建目录
                    if(!filePath.getParentFile().exists()) {
                        filePath.getParentFile().mkdirs();
                    }
                    //将上传文件保存到一个目标文件中
                    myfile.transferTo(filePath);
                    //将重命名后的图片名存到goods对象中,添加时使用
                    goods.setBpicture(fileNewName);
                }
                int n = goodsRepository.addGoods(goods);
                if(n > 0){//成功
                    response.setContentType("text/html;charset=utf-8");
                    PrintWriter out = response.getWriter();
                    out.print("");
                    out.flush();
                    return "redirect:/goods/selectAllBooksByPage?currentPage=1&act=select";
                }
            }
        }

你好,你这种情况是在本项目的目标路径生成资源,这种方式受限于项目编译,因为真正读取的路径是在target编译后的文件夹中,而且如果直接指定到编译文件夹,下次重新编译静态文件全部失效,最好不要在本项目路径下,可以在d盘或其他位置,亲测。

指定

spring:
  web:
    resources:
      static-locations: file:xxxx

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7798387
  • 你也可以参考下这篇文章:解决Springboot项目在idea中能正常使用,但打包后无法运行的情况
  • 除此之外, 这篇博客: [已解决]idea导入springboot程序后,运行按钮变成灰色中的 [已解决]idea导入springboot程序后,运行按钮变成灰色 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 刚刚搞项目的时候需要将自己写好的程序项目转移到别的新电脑上,后来发现一切准备好之后发现运行按钮的是灰色的如法启动项目。这里需要强调的是一点是这个是新装的idea所以你要确保你的配置和你之前的那台的配置是一样的,有些maven的配置是必须要配好才能运行的,所以看到这里先去检查一下你新版本的idea是不是已经配置好。

    如果没有配置好那么接着往下看:
    找到maven的lifecycle 再点击直接重新install,但是前提是你要添加了你项目的maven才可以哦!
    在这里插入图片描述

    但是如果你没有配置到基础的配置环境的话他会弹出来让你去设置maven的配置。如下:
    在这里插入图片描述
    经过这个配置之后基本上就可以运行了!

    在这里插入图片描述
    如果说还是不行的话,那你要看看你的 main 函数是不是存在问题,或者本身程序在拷贝过程中是有点问题的!如果还是不行的话,那我也没办法了。我在第一步就已经成功解决了!