图片上传到服务器与回显

上传图片到服务器和本地都可以

为了不浪费你的时间,先声明了。

这次的图片上传不是上传到指定服务器,只是上传到项目所在的服务器上。(如果要上传到指定服务器可以使用FTP上传到指定服务器)

进入正题了

上传的思路

  1. 上传图片先指定上传的路径。
  2. 给文件起一个不会重名的新名字。(UUID,当前时间加毫秒,还有许多)
  3. 路径和新名字拼接一下
  4. 生成新的文件类型
  5. 判断路径是否存在,不存在创建
  6. 上传

上图

在这里插入图片描述

源码

此时上传的·位置时linux的路径。路径可以自己定义的,定义自己想要保存的位置。

当然也可以对比着当前项目位置来定义上传的位置

代码中的**System.getProperty(“user.dir”);**就是获取当前项目所在的位置路径。需要的可以自行修改

 //上传的位置
    private static final String url = "/www/server/tomcat/uploadImg/";

    @RequestMapping("come")
    public String uploadTest(MultipartFile file) throws IOException {
        //获取上传文件的后缀
        String suffix =  file.getOriginalFilename().split("\\.")[1];
        //以时间命名 防重名                                   时间 + 后缀 = 新文件名称
        String newName = new SimpleDateFormat("YYYYMMddHHmmssSss").format(new Date())+"."+suffix;
        //获取当前项目所在位置
        //String aa = System.getProperty("user.dir");
        //路径加文件名
        String lastUrl = url + newName;
//        System.out.println(lastUrl);
        //生成新的文件类型
        File f =new File(lastUrl);
        //如果没有这个路径
        if(!f.exists()){
            //生成这个路径
            f.mkdirs();
        }
        //上传
        file.transferTo(f);

        return lastUrl;
    }

基本上注解已经解释得很清楚了!!

图片的回显

回显的思路

  1. 先获取着图片所在的位置带图片名。
  2. 然后使用IO流进行操作,不做多解释了!!

图解
在这里插入图片描述
源码

  @RequestMapping("/getUrl")
    public String getUrl(HttpServletResponse response,String filename){
//        String filename = "20200607170753.jpg";
        //输入流
        FileInputStream fis = null;
        //输出流
        OutputStream os =null;
        try {
            //图片所在的位置
            String Url = url + filename;
//            String Url = "/www/server/tomcat/uploadImg/"+filename;
            System.out.println(Url);
            fis = new FileInputStream(Url);
            os = response.getOutputStream();
            int count = 0;
            byte[] bytes = new byte[1024];
            while ((count = fis.read(bytes)) != -1){
                os.write(bytes,0,count);
                os.flush();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            fis.close();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "ok";
    }

这个也没啥说的!! 就是这了

猜你喜欢

转载自blog.csdn.net/weixin_45729937/article/details/107322440