Springboot 使用wangEditor3.0上传图片
wangEditor是一个很好用的富文本编辑器,可以上传图片到服务器上,存放位置为Tomcat目录下
Springboot启动时自带Tomcat,重新启动时以前上传的图片便会丢失
研究了一下,给出一种可行性方法,思路就是每次上传图片至Tomcat时复制同名图片到指定文件夹中,下次启动时从指定文件夹复制图片到Tomcat中
如果大家有更好的方法不吝赐教
开发工具STS,Springboot2.0
JS代码
<div id="div1" style="left:15%;width:70%;position:absolute;">
<p>欢迎使用 wangEditor 编辑器</p>
</div>
<button id="btn1">获取html</button>
<button id="btn2">获取text</button>
<script type="text/javascript" src="/wangEditor.min.js"></script>
<script type="text/javascript">
var E = window.wangEditor
var editor = new E('#div1')
editor.customConfig.debug=true;
editor.customConfig.uploadImgServer = '/upload'
editor.customConfig.uploadFileName = 'myFileName';
editor.customConfig.debug = true
editor.create()
document.getElementById('btn1').addEventListener('click', function () {
// 读取 html
}, false)
document.getElementById('btn2').addEventListener('click', function () {
// 读取 text
alert(editor.txt.text())
}, false)
</script>
Controller
@RequestMapping("/upload")
public Map upload(HttpServletRequest request,@RequestParam(value="myFileName")MultipartFile file) throws IllegalStateException, IOException {
String pathRoot = request.getSession().getServletContext().getRealPath("upload");
String fileName = file.getOriginalFilename();//获取图片名称
String path = pathRoot+"\\"+fileName;
System.out.println(path);
File dest = new File(path);
// 检测是否存在目录
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();// 新建文件夹
}
file.transferTo(dest);// 文件写入
String path2="D:\\aim\\upload"+"\\"+fileName;
UtilTools.copyFile(path, path2);
Map map=new HashMap();
map.put("errno", 0);
path="http://localhost:8069/upload/"+fileName+"";
List list=new ArrayList();
list.add(path);
map.put("data", list);
return map;
}
工具类
package com.ggr.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
public class UtilTools {
/**
* 复制单个文件
* @param oldPath String 原文件路径 如:c:/fqf.txt
* @param newPath String 复制后路径 如:f:/fqf.txt
* @return boolean
*/
public static void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) { //文件存在时
InputStream inStream = new FileInputStream(oldPath); //读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1444];
int length;
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}
public static void copyFolder(String oldPath, String newPath) {
try {
(new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹
File a=new File(oldPath);
String[] file=a.list();
File temp=null;
for (int i = 0; i < file.length; i++) {
if(oldPath.endsWith(File.separator)){
temp=new File(oldPath+file[i]);
}
else{
temp=new File(oldPath+File.separator+file[i]);
}
if(temp.isFile()){
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath + "/" +
(temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ( (len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
if(temp.isDirectory()){//如果是子文件夹
copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
}
}
}
catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();
}
}
}
Listener
package com.ggr.listener;
import java.io.File;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import com.ggr.util.UtilTools;
/*
* 注册监听器
* 监听文件
*/
@WebListener
public class BolgContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
String path1=sce.getServletContext().getRealPath("upload");
String path2="D:\\aim\\upload";
File path1File=new File(path1);
File path2File=new File(path2);
if(path2File.exists()){
System.out.println("复制文件数量:"+path2File.list().length);;
UtilTools.copyFolder(path2, path1);
}else{
path2File.mkdirs();
}
System.out.println("path1:"+path1);
System.out.println("path2:"+path2);
System.out.println("Context监听器注册");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Context监听器销毁");
}
}

浙公网安备 33010602011771号