因为自己在模仿博客网站需要用到富文本编辑器,wangEditor是一款简单,开源的编辑器。用它最好不过了,但是在使用的过程中却出现了很多问题,在大佬们的帮助下,终于顺利完成,写下写篇博客希望对后来的人有帮助。
如果你不懂用页面怎么上传图片到服务器的话,请先看这篇文章:
https://blog.csdn.net/tomwildboar/article/details/80102417
下面我所说的是在你已经明白了页面上传图片原理的基础之上。其实在作者的文档上面已经写的很清楚了
当你写好的后台之后你发现就算你上传成功到了你确定的位置,但是页面还是会给你报一个错,就是上传失败。更别提图片的回显了,为什么会出现这样的错呢?
当然是因为你没按照上面的图片的要求去做,上面要求你传递两个参数一个是errno 一个是data(请注意这个data是一个数组那怕你上传的只是一个图片也必须是数组)
下面我给出代码供你们参考(我这里只是简单的上传图片并且回显需要其它参数去自己看文档)
需要的三个jar包自己去下载
后台Servlet代码
package servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.alibaba.fastjson.JSON;
import util.Result;
import util.ResultUtil;
public class UploadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String savePath = this.getServletContext().getRealPath("/upload");
savePath = savePath.replace("\\", "\\\\");
File file = new File(savePath);
//判断上传文件的保存目录是否存在
if(!file.exists()){
//目录不存在需要创建目录
file.mkdir();
}
//上传提示消息
String message="";
try{
//使用apache文件上传组件处理文件上传步骤
//1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
//解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
//4、使用ServletFileUpload解析器上传数据,解析结果返回的是一个List<FileItem>集合
// 每一个FileItem对应一个Form表单的输入项
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list) {
String filename = item.getName();
System.out.println(filename);
if(filename == null || filename.trim().equals("")){
continue;
}
filename = filename.substring(filename.lastIndexOf(".")+1);
//给文件重新取一个名字UUID
filename = UUID.randomUUID().toString()+"."+filename;
//获取item中的上传文件的输入流
InputStream in = item.getInputStream();
//创建一个文件输出流
FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);
//创建一个缓冲区
byte[] buffer = new byte[1024];
//判断输入流中的数据是否已经读完的标识
int len = 0;
//循环将输入流读入到缓冲区当中,
while((len = in.read(buffer)) > 0) {
//使用FileOutputStream输入流将缓冲区的数据写入到指定的目录(savePath + "\\" +filename)
out.write(buffer,0,len);
}
//这三句代码之及其重要的,就是为了返回JSON数据做准备的
String [] str = {request.getContextPath() + "/upload/" + filename};
Result result = ResultUtil.success(str);
response.getWriter().write(JSON.toJSONString(result));//返回url地址
//关闭流
in.close();
out.close();
//删除处理文件上传时生成的临时文件
item.delete();
}
} catch(Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
两个工具类
package util;
import java.io.Serializable;
public class Result implements Serializable {
private Integer errno;
private String[] data;
public Result() {}
public Integer getErrno() {
return errno;
}
public void setErrno(Integer errno) {
this.errno = errno;
}
public String[] getData() {
return data;
}
public void setData(String[] images) {
this.data = images;
}
}
package util;
public class ResultUtil {
public static Result success (String[] images) {
Result result = new Result();
result.setErrno(0);
result.setData(images);
return result;
}
public static Result success() {
return success(null);
}
}
web.xml代码,其实这个也没有什么需要写的,但是为了防止读者出现了问题以为是web.xml的问题,所以在这里也把代码列出来
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>unploadanddownload</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>UploadServlet</display-name>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
</web-app>