wangEditor3上传图片到服务器以及删除服务器多余的图片(包括wangEditor3内容处理以及图片上传和删除)

1、内容处理

1.1 设置内容  

        添加内容的方式有三种:第一种是直接将内容写到要创建编辑器的

标签中,第二种是在创建编辑器之后,使用editor.txt.html(...)设置编辑器内容,第三种是在创建编辑器之后,使用editor.txt.append('

追加的内容

')
继续追加内容。

        清空内容可以使用editor.txt.clear()

1.2 获取内容

         获取内容的方式有三种:第一种是使用editor.txt.html()读取文本的html代码,第二种是使用editor.txt.text()获取纯文本内容,第三种是使用editor.txt.getJSON()获取 JSON 格式的编辑器的内容。

          需要注意的是:从编辑器中获取的 html 代码是不包含任何样式的纯 html,如果显示的时候需要对其中的

等标签进行自定义样式(这样既可实现多皮肤功能)。

1.3 使用textarea 

        wangEditor 从v3版本开始不支持 textarea ,但是可以通过onchange来实现 textarea 中提交富文本内容。

2、上传图片

    默认情况下,编辑器不会显示“上传图片”的tab,因为你还没有配置上传图片的信息。有两种方式可以实现显示“上传图片”的tab,一是在编辑器创建之前添加editor.customConfig. uploadImgShowBase64 = true,使用 base64 保存图片;二是在编辑器创建之前添加editor.custom Config.uploadImgServer = '/upload',上传图片到服务器。

    默认情况下,“网络图片”tab是一直存在的。如果不需要,可以在编辑器创建之前添加editor.customConfig.showLinkImg = false,隐藏“网络图片”tab。

2.1  上传图片到服务器

        由于使用base64保存图片上传和文本提交没有多大的区别,所以我这里就不赘述。不懂而又想了解的可以点击这里进入它的官方文档。

       这里我重点介绍使用自定义上传图片事件上传图片至服务器和删除服务器多余的图片。

代码示例如下:

index.jsp文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

富文本

新闻标题:

新闻内容:

wangedit.java文件(处理图片上传到服务器的路径):

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import java.util.UUID;

@WebServlet(name ="wangedit ",urlPatterns ="/wangedit/upload")

public class wangeditextends HttpServlet {

@Override

    protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {

req.setCharacterEncoding("UTF-8");

resp.setContentType("text/json;charset=UTF-8");

JSONObject json =new JSONObject();

PrintWriter out = resp.getWriter();

//获取上传文件的id

        String id=req.getParameter("id");

//指定上传位置

        String  path = req.getSession().getServletContext().getRealPath("upload/"+id+"/");

File saveDir =new File(path);

//如果目录不存在,就创建目录

        if(!saveDir.exists()){

saveDir.mkdir();

}

DiskFileItemFactory factory =new DiskFileItemFactory();

ServletFileUpload sfu =new ServletFileUpload(factory);

sfu.setHeaderEncoding("UTF-8");// 处理中文问题

        sfu.setSizeMax(10 *1024 *1024);// 限制文件大小

        String fileName ="";

try {

List  fileItems = sfu.parseRequest(req);

JSONArray arr =new JSONArray();//注意摆放的位置

            for (FileItem item : fileItems) {

//获取文件的名字

                fileName = item.getName();

fileName = fileName.substring(fileName.lastIndexOf(".")+1);

fileName = UUID.randomUUID().toString() +"."+ fileName;

File saveFile =new File(path +"/" + fileName);//将文件保存到指定的路径

                item.write(saveFile);

String imgUrl = req.getContextPath()+"/upload/"+id+"/"+fileName;

arr.add(imgUrl);

RouteStr.routeList.add(imgUrl);

}

json.put("errno",0);

json.put("data", arr);

out.print(json);

out.flush();

out.close();

}catch (Exception e) {

e.printStackTrace();

json.put("errno","200");

json.put("msg","服务器异常");

out.print(json.toString());

}

}

}

RouteStr.java文件(用来保存上传图片的路径):

import java.util.ArrayList;

import java.util.List;

public class RouteStr {

public static  ListrouteList=new ArrayList();

}

DeleServlet.java文件(删除服务器中多余的图片,这里没有做HTML代码上传数据库的处理):

import com.test.www.pojo.News;

import com.test.www.service.NewsService;

import com.test.www.service.NewsServiceImpl;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.List;

@WebServlet(name ="DeleServlet",urlPatterns ="/Servlet/Dele")

public class DeleServletextends HttpServlet {

@Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

this.doGet(request, response);

}

@Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

String routeStr = request.getParameter("content");

String id=request.getParameter("id");

String title=request.getParameter("title");

PrintWriter out=response.getWriter();

System.out.println(id);

System.out.println(title);

System.out.println(routeStr);

String[] routeArray=routeStr.split(" ");

List routeActList=new ArrayList();

for (int i=0;i

System.out.println(routeArray[i]);

if (routeArray[i].startsWith("src=\"/")) {

String  temp=routeArray[i].replace("\"","").replace("src=","");

routeActList.add(temp);

}

}

boolean isDele=true;

for (int j=0;j

for (int i=0;i

if(routeActList.get(i).equals(RouteStr.routeList.get(j))){

isDele=false;

}

}

if (isDele){

String fileName = RouteStr.routeList.get(j);

fileName=fileName.substring(fileName.lastIndexOf("/")+1);

String    path = request.getSession().getServletContext().getRealPath("upload/"+id+"/");

File file =new File(path +"/" + fileName);

if (file.exists()) {

file.delete();

System.out.println("删除成功");

}

}else{

isDele=true;

}

}

NewsService newsService=new NewsServiceImpl();

News news=new News();

news.setId(Integer.parseInt(id));

news.setContent(routeStr);

news.setTitle(title);

boolean isSave=newsService.add(news);

System.out.println("保存"+isSave);

if (isSave){

RouteStr.routeList.clear();

System.out.println("保存成功!");

out.print(true);

}else{

System.out.println("保存失败!");

for (int i=0;i

String fileName = RouteStr.routeList.get(i);

fileName=fileName.substring(fileName.lastIndexOf("/")+1);

String    path = request.getSession().getServletContext().getRealPath("upload/"+id+"/");

File file =new File(path +"/" + fileName);

if (file.exists()) {

file.delete();

}

}

RouteStr.routeList.clear();

}

out.flush();

out.close();

}

}

show.jsp文件(展示数据库内容):

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

新闻内容展示


效果展示:

编辑图片的效果:

编辑内容的显示效果

wangEditor3上传图片到服务器以及删除服务器多余的图片(包括wangEditor3内容处理以及图片上传和删除)_第1张图片

从数据库取出来的内容显示效果:

wangEditor3上传图片到服务器以及删除服务器多余的图片(包括wangEditor3内容处理以及图片上传和删除)_第2张图片

上面的方法是先利用集合存储上传服务器的图片路径,提交内容以后再通过对比删除多余的图片。其中图片的路径是新闻编号作为目录,缺点是还会有图片的冗余。因为多条新闻可能会有相同的图片。最终的解决办法是定时从数据库里取出路径,和服务端的图片路径进行比对,定时清除。

3、总结

      要实现上述功能,需要导入commons-fileupload.jar、commons-io.jar、fastjson.jar、json-lib-2.4-jdk15.jar这四种jar包。

       本篇内容实现了利用wangEditor3上传图片到服务端、删除服务端冗余的图片、提交文本和图片信息到数据库、展示数据库的内容等等。

       如果这篇文章对你有帮助的话,也麻烦给个赞,激励一下作者,谢谢大家!!!!!

     打个广告,本人博客地址是:风吟个人博客

  

你可能感兴趣的:(wangEditor3上传图片到服务器以及删除服务器多余的图片(包括wangEditor3内容处理以及图片上传和删除))