Web开发之富文本编辑器&文件上传功能

目录

富文本编辑器

什么是富文本编辑器

下载富文本编辑器

使用富文本编辑器

文件上传

官网

​文件上传功能

图片上传的本质

文件夹的映射


富文本编辑器

什么是富文本编辑器

富文本编辑器,Multi-function Text Editor, 简称 MTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器

富文本编辑器提供类似于 Microsoft Word 的编辑功能。应用广泛,最先只有 IE 浏览器支持,其它浏览器相继跟进,在功能的丰富性来说,还是 IE 强些。虽然没有一个统一的标准,但对于最基本的功能,各浏览器提供的 API 基本一致,从而使编写一个跨浏览器的富文本编辑器成为可能。

下载富文本编辑器

💬:富文本编辑器的版本有很多,这里我主要讲的是第四代富文本编辑器(CKEditor 4),官网链接已经贴在下面了

Quick Start Guide - CKEditor 4 Documentationicon-default.png?t=M276https://ckeditor.com/docs/ckeditor4/latest/guide/dev_installation.html点击链接可以进入官网,虽然是纯英文,但是在页面上右键就可以选择中文格式了🙂:

在官网可以直接下载,下载后将文件解压 

解压后的ckeditor文件夹:

 

使用富文本编辑器

使用之前要将富文本编辑器的文件夹复制到web项目的webapp目录下面:

这里先写两个简单的界面来模拟表单的提交,代码如下面两张图:

新闻增加界面: 

使用富文本编辑器增加内容:

 

处理新闻增加的界面: 

doAdd1.jsp运行后

在浏览器上打印了:

💬:因为使用了富文本编辑器,所以我们可以发现,上传到浏览器上的文本是具有文本格式和段落的:

在控制台上打印了:

 

 其中,通过文件选择器上传的图片也会在控制台中被打印:

 解释:img中的scr里面打印的是代码,不是图片路径

这是因为计算机将图片转成了文本数据来表示,将这个文本数据复制到文本文档中发现有很长一段文本数据,只要复制这个数据就可以显示对应的图片了:

文件上传

官网

文件上传功能

💬:可以上传的文件有很多,如图片,动图,视频......等等

注1:我这里的文件上传功能实现的是在支持web开发的eclipse中,使用文件选择器,将选中的文件保存到指定的电脑磁盘的文件夹中的这类操作

注2:可以使用别人写好的,用于文件上传的jar包: smartUpload (目前已经停止更新) 或者 commons fileUpload(用它) : 

先将用于文件上传的jar包导入到正在开发的web项目中:

 

此功能需要用到的界面:

a.jsp新闻增加界面,代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>新闻增加界面</title>
<!-- 先将下载后的富文本编辑器文件夹复制到项目的webapp目录下,再: -->
<!-- 1.导入src:ckeditor目录下面的ckeditor.js -->
<script src="ckeditor/ckeditor.js"></script>
</head>
<body>
<h1>新闻增加界面</h1>
	<%--
	文件上传中表单必须注意的规则:
    	1. 必须是post method="POST"
   	 	2. 必须是多段式表单 enctype="multipart/form-data"
   	 但是多段式表单出现中文乱码情况时不能用request.getCharacterEncoding()来解决
   	 ,因为这种方法只对普通表单有用,对于多段式表单,可以使用破碎重组
	--%>
	<form action="doAdd1.jsp" method="post" enctype="multipart/form-data">
		<p><input type="text" name="title"></p>
	<p>
		<!-- 2.定义文本域,具备id -->
		<textarea name="content" id="myEditor"></textarea>
	</p>
		<%--文件选择器--%>
        <input type="file" name="myFile">
	<button>提交</button>
	</form>
	<script>
		//根据id生成富文本编辑器
		CKEDITOR.replace('myEditor');
	</script>
</body>
</html>

 doAdd1.jsp处理新闻增加的界面,代码如下:

<%@page import="java.util.UUID"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.List"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<%--
	多段式表单 enctype="multipart/form-data"
   	 但是多段式表单出现中文乱码情况时不能用request.getCharacterEncoding()来解决
   	 ,因为这种方法只对普通表单有用,对于多段式表单,可以使用破碎重组,或者getString("utf-8")在拿值的时候将它设置为中文
	--%>
<%
    // 为基于磁盘的文件项创建工厂
    //比如:你上传一张图片到微信上
    // 微信的服务器就会:接收到你的图片,将图片存到电脑磁盘上
    DiskFileItemFactory factory = new DiskFileItemFactory();

    // 创建一个新的文件上传处理程序:upload对象
    ServletFileUpload upload = new ServletFileUpload(factory);

 	String title="";
    String content="";
    String newName="";
    // 让处理程序(upload对象)去解析请求中的数据
    // 因为请求中的数据不止是图片,还有很多数据需要解析处理
    List<FileItem> items = upload.parseRequest(request);
   	// 在List中有普通的数据、文件数据
    for (FileItem item : items) {
    	if(item.isFormField()){//是普通的数据,如新闻标题,新闻内容
    	//拿到这些数据
    	  System.out.println("普通:");
    	 String name = item.getFieldName();//取表单中的name属性
         String value = item.getString("utf-8");//取name属性对应的值!
          System.out.println("\t"+name);
          System.out.println("\t"+value);
       //需要进行判断取值
         if(name.equals("title")){
             title=value;
         }
         if(name.equals("content")){
             content=value;
         }
    	}else{//是文件数据,如图片
    	//拿到这些数据
    	  System.out.println("文件:");
    	 String name = item.getFieldName();//取表单中的name
         String oldName=item.getName();//取文件的名字!
          System.out.println("\t"+name);
          System.out.println("\t"+oldName);
         //防止文件名字重复:生成一个新名字
          newName = UUID.randomUUID().toString().replace("-", "");//UUID
         //生成动态的文件后缀名:.png,.jpg,.gif,.mp4......等等
         //将文件原来的名字进行切割:
            //切割前:2022040.13.5221.mp4
            //切割后:[2022040,13,5221,mp4]
    String[] strings = oldName.split("\\.");//.代表任意字符,要使用转义符/将它转成真正的.点
         newName+="."+strings[strings.length-1];//拿到切割后数组的最后一位:.xxx
         //如果是文件就将文件保存到本地
         item.write(new File("E:\\icons\\"+newName));
    	}
    }
%>

doAdd1.jsp处理新闻增加的界面中的方法:getString("utf-8")是带参数的方法:

通过ctrl+1点击方法名可以看到该方法的代码(作用:破碎重组,防止中文乱码):

 文件上传功能的运行效果:这里使用文件选择器上传了一张图片1.png

点击提交就可以将这张保存到指定的路径下了:

除了上传图片,还可以上传动图,视频等:

图片上传的本质

图片从自己的电脑保存到服务器的电脑,文件可以保存在服务器,数据库中,将图片保存到硬盘中,或者将图片的路径存到数据库都是文件的上传。

文件夹的映射

概念:把文件夹映射到服务器中,让用户可以在浏览器通过文件夹映射后的路径来访问图片

具体操作:

在eclipse中双击服务器到如 下界面,再点击红色框按钮,分别填入要映射的电脑磁盘中的文件夹的路径和映射后的路径名称:

     不知道如何在eclipse中打开服务器的可以参考这篇文章:

JavaWeb01.WED环境的搭建_小阿飞_的博客-CSDN博客JDK开发工具包jdk是什么?jdk是java development kit的缩写,意思是java程序开发的工具包JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。如何下载和安装jd..https://blog.csdn.net/yifei_345678/article/details/123674499?spm=1001.2014.3001.5502点击ok后就已经将指定的文件夹成功映射在服务器中了:

映射文件夹的用处:可以让客户通过映射后的路径在浏览器中访问文件夹中的内容,这个内容可以是图片,动图,视频等等:

 所以,都看到这了,还不点个赞?


感 谢 阅 读

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
wangEditor是一款基于JavaScript和CSS开发Web富文本编辑器,它具有轻量级、简洁、易用的特点。相比于普通的文本编辑器,富文本编辑器可以输入超越文本的数据内容,包括上传图片、输入表情、字体大小字号调整、颜色设置、对齐方式等功能操作。[1] 在使用wangEditor富文本编辑器时,首先需要在代码中引入相关的文件。可以在editor.vue文件中添加以下代码: ```html <template> <div> <div ref="editor" style="text-align:left"></div> </div> </template> <script> import E from 'wangeditor' export default { name: 'MyEditor', data() { return { editorContent: '', editor: null } }, props: { value: { type: String, required: true } }, model: { prop: 'value' }, methods: { getContent: function () { alert(this.editorContent) }, _initEditor(that) { var editor = new E(this.$refs.editor) editor.config.zIndex = 100 editor.create() that.editor = editor } }, mounted() { this._initEditor(this) setTimeout(() => { this.editor.txt.html(this.value) }, 1000) } } </script> <style scoped> </style> ``` 然后,可以在需要使用富文本编辑器的地方注册组件,并创建编辑器。可以使用以下代码: ```html <!-- 首先给出一个div,并设id属性 --> <div id="div1"></div> <script type="text/javascript"> var E = window.wangEditor var editor = new E('#div1') // 创建编辑器 editor.create() </script> ``` 以上是使用wangEditor富文本编辑器的基本介绍和使用方法。[1][2][3]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值