图片上传与回显

图片上传与回显

上传

前端页面就不展示了,就是普通的ajax请求,具体可以参照饿了吗-UI。

参数 :MultipartFile file

  		if (file.isEmpty()){
            return Result.error("请上传文件");
        }

        long currentTime = System.currentTimeMillis();
        Date date = new Date(currentTime); //创建Date对象并传入毫秒值
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //自定义日期格式
        String formattedDateTime = sdf.format(date);

        //截取后缀
        String fileName = file.getOriginalFilename();
        if (fileName == null) {
            return Result.error("不能为空");
        }
        int lastDotIndex = fileName.lastIndexOf('.');
        String fileExtension = fileName.substring(lastDotIndex);
        if (!(".jpg".equals(fileExtension)||".png".equals(fileExtension)||".pdf".equals(fileExtension)))
        return Result.error("图片格式不对");

        UUID uuid = UUID.randomUUID();
        String string = uuid.toString().replaceAll("-","");

        //保存地址
        String path = 物理地址+formattedDateTime+"\\"+string+fileExtension;
       
        //返回地址
        String url = 域名或者ip地址+formattedDateTime+"/"+string+fileExtension;

        File f = new File(path);
        try {
        File fileParent = f.getParentFile();
        if(!fileParent.exists()){
            //如果文件夹不存在则创建文件夹
            System.out.println("文件夹不存在,新建目录");
            fileParent.mkdirs();
        }
            file.transferTo(f);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("上传失败"+ e.getMessage());
            return Result.error("上传失败");
        }
        return Result.success("上传成功",url);

回显

好了,问题来了。怎么将IP地址(127.0.0.1)映射到物理地址(C:某某某/某某某)呢?
这就不得不提到NGINX这个东西了。PS:我被它折磨了好多天。
如果启动了 nginx,然后中途修改配置文件,记得先关闭nginx再重新启动。
在server加入

 server {
        listen       80;
        server_name  localhost;
		location ~ .*\.*(jpg|png|gif|jpeg)$ {
            root  物理地址;
        }}

这上面的意思是拦截后缀为jpg、png、gif、jpeg的请求,将localhost换成物理地址。当然localhost也能换成IP地址或者域名使用,这就得看自己的需求了。例子:localhost:80/img/test.jpg 等同于 物理地址/img/test.jpg
前端使用<img url = " "/>就能访问到图片了。