springboot+layui上传图片到服务器上,重启服务器,图片消息问题解决

springboot+layui上传图片到服务器上,重启服务器,图片消息问题解决,第1张

springboot+layui上传图片服务器上,重启服务器,图片消息问题解决

首先:解释一下原因【个人理解】:因为图片只是临时存入到服务器中,重启之后,临时文件会被删除,所以重启之后图片会被删除,再看页面,图片不能显示。

解决方法: 1.配置静态资源映射
package com.hl.configuration;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.servlet.Filter;


@Configuration
public class ImgConfigurer implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/upload/**").  //服务器文件路径
                addResourceLocations("file:/" + "C://upload/"); //映射的本地文件路径
    }
}
2.在配置文件中配置路径 [要注意rootPath:与值中间必须有一个空格(yml配置文件规则)]
file:
  #本地路径
  rootPath: C://upload/   
  #服务器路径  :获取方式request.getServletContext().getRealPath("/upload/");
#  rootPath: 服务器路径/upload/
3.在上传方法中的使用

@Controller
@RequestMapping("/upload")
public class LayEditController {
   //配置文件中配置本地映射路径/服务器路径
    @Value("${file.rootPath}")
    private String rootPath;

   
    //上传文件
    @ResponseBody
    @RequestMapping(value = "/uploadFile")
    public String uploadFile(HttpServletRequest request,@Param("file") MultipartFile file) throws IOException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
        String res = sdf.format(new Date());
        //服务器上使用

//如果在配置文件中已经配置,可以不用写
//        String rootPath =request.getServletContext().getRealPath("/upload/");//target的目录
        //本地使用
//        String rootPath ="/C:/upload/";


        //原始名称
        String originalFilename = file.getOriginalFilename();
        //新的文件名称
        String newFileName = res+originalFilename.substring(originalFilename.lastIndexOf("."));
        //创建年月文件夹
        Calendar date = Calendar.getInstance();
        File dateDirs = new File(date.get(Calendar.YEAR)
                + File.separator + (date.get(Calendar.MONTH)+1));
        //新文件
        File newFile = new File(rootPath+File.separator+dateDirs+File.separator+newFileName);
        //判断目标文件所在的目录是否存在
        if(!newFile.getParentFile().exists()) {
            //如果目标文件所在的目录不存在,则创建父目录
            newFile.getParentFile().mkdirs();
        }
        System.out.println(newFile); //可打印出文件路径
        //将内存中的数据写入磁盘
        file.transferTo(newFile);

        //完整的url
        String fileUrl =  "/upload/"+date.get(Calendar.YEAR)+ "/"+(date.get(Calendar.MONTH)+1)+ "/"+ newFileName;
        Map map = new HashMap();
        Map map2 = new HashMap();
        //0表示成功,1失败
        map.put("code",0);
        //提示消息
        map.put("msg","上传成功");
        map.put("data",map2);
        //图片url
        map2.put("src",fileUrl);
        //图片名称,这个会显示在输入框里
        map2.put("title",newFileName);
        String result = new JSonObject(map).toString();
        return result;
    }
}
 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5687137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存