首页 新闻 会员 周边

关于spring boot 上传图片问题

0
[待解决问题]

是这样的,本人公司现在需要用户能够上传图片到服务器,上传完之后可以根据路径直接取到资源,现在我的思路如下:

前端

<form action="/saveFile" method="post" enctype="multipart/form-data">
  <input type="file" name="file"/><br/>
  <input type="submit"/>
</form>

 

后端controller层

@RequestMapping("/saveFile")

@ResponseBodypublic String saveFile(MultipartFile file,HttpServletRequest request){

  String path = request.getSession().getServletContext().getRealPath("");
  try {
    file.transferTo(new File(""));
  } catch (IllegalStateException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  }
    return null;
  }

问题来了,用MultipartFile的话图片下载的路径因该是哪?在不停服务器的前提下上传完成后可以直接显示在前台吗?求助大神!

hjghhh的主页 hjghhh | 菜鸟二级 | 园豆:214
提问于:2017-02-28 09:14
< >
分享
所有回答(3)
0
 public void uploadImg(ModelMap modelMap, MultipartFile thumbnail, HttpServletRequest request) throws IOException {

        MessageDto msg = new MessageDto();
        if (thumbnail != null) {// 判断上传的文件是否为空
            String path = null;// 文件路径
            String type = null;// 文件类型
            String fileName = thumbnail.getOriginalFilename();// 文件原名称
            System.out.println("上传的文件原名称:" + fileName);
            // 判断文件类型
            type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
            if (type != null) {// 判断文件类型是否为空
                if ("GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())) {
                    // 项目在容器中实际发布运行的根路径
                    String realPath = request.getSession().getServletContext().getRealPath("/");
                    // 自定义的文件名称
                    String trueFileName = String.valueOf(System.currentTimeMillis());
                    // 设置存放图片文件的路径
                    path = realPath + "images/" + trueFileName + "." + type;
                    //System.out.println("存放图片文件的路径:" + realPath + "名称" + trueFileName);
                    // 转存文件到指定的路径
                    thumbnail.transferTo(new File(path));
                    System.out.println("文件成功上传到指定目录下");
                    modelMap.put("src", "/images/" + trueFileName + "." + type);

                } else {
                    msg.setCode("0");
                    msg.setCtx("不是我们想要的文件类型,请按要求重新上传");
                    modelMap.put("msg", msg);
                    return;
                }
            } else {
                msg.setCode("0");
                msg.setCtx("文件类型为空");
                modelMap.put("msg", msg);
                return;
            }
        } else {
            msg.setCode("0");
            msg.setCtx("没有找到相对应的文件");
            modelMap.put("msg", msg);
            return;
        }
    }

试试呢

大园子 | 园豆:37 (初学一级) | 2017-03-01 08:41
0

把图片路径直接存一个在回显一下就好了

 

张云山 | 园豆:642 (小虾三级) | 2017-03-01 09:41
0

你用的spirngboot嘛,先全局配置一个你上传文件的物理路径,然后用一张表来保存那个文件路径,你最好保存相对路径---简单吧

全力以赴001 | 园豆:629 (小虾三级) | 2017-03-01 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册