这是有史以来,研究时间最长的一个问题了,得好好写写,写的一个仿丁香医生的项目,后台用到富文本编辑器编辑内容,用springboot集成,尝试了kindeditor和uedit都没有成功,鉴于自己后台用的layui,所以用了layedit。后台接口代码自己研究的,非常的简易,暂时还没有加逻辑,但是可以读取到图片了终于。springboot的静态资源总是访问不到,需要配置映射,下面是例子

@Configuration
public class MyConfigurer extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
/*
* 说明:增加虚拟路径(经过本人测试:在此处配置的虚拟路径,用springboot内置的tomcat时有效,
* 用外部的tomcat也有效;所以用到外部的tomcat时不需在tomcat/config下的相应文件配置虚拟路径了,阿里云linux也没问题)
*/
//告知系统static 当成 静态资源访问
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("/layeditImages/**").addResourceLocations("file:D:/image/");

}
}
,后台controller这么写的
@RequestMapping("/uploadImage")
@ResponseBody
public String uploadImage(@RequestParam("file") MultipartFile[] files,
HttpServletRequest request) throws IOException {
Map<String,Object> map = new HashMap<String,Object>();
Map<String,Object> map2 = new HashMap<String,Object>();
String substring = UUID.randomUUID().toString().substring(0, 7);
String newName = substring+files[0].getOriginalFilename();
File newImage = new File("D:\\image\\"+newName);
files[0].transferTo(newImage);

map.put("code",0);//0表示成功,1失败
map.put("msg","上传成功");//提示消息
map.put("data",map2);
map2.put("src","/layeditImages/"+newImage.getName());//图片url
map2.put("title",newImage.getName());//图片名称,这个会显示在输入框里
System.out.println(newImage.getPath()+"==="+newImage.getName());
JSONObject jsonObject = JSONObject.fromObject(map);
String result = jsonObject.toString();
return result;
}
一开始想着放在项目中,觉着好访问,但是这里有个坑,不要把文件放在项目中,因为妨碍tomcat中的文件,不会立刻刷新,要重启项目才能被访问到!!
因为layedit的请求数据带着该file,name='file',接受类型用MultipartFile
MultipartFile和File有什么区别?
这两个词一般是Java中出现的吧,前者代表HTML中form data方式上传的文件,后者是文件系统的抽象,前者信息较少,只有二进制数据+文件名称


使用文件时的重点,不要把文件放在项目路径下,配置好对于磁盘或者其他服务器的映射


posted on 2020-09-15 15:02  w123w  阅读(443)  评论(0编辑  收藏  举报