Java学习笔记-Day59 文件上传、富文本编辑器

Java学习笔记-Day59 文件上传、富文本编辑器



一、文件上传

1、简介


在 Servlet3.0 以前的版本没有对文件上传进行支持,只能用第三方组件实现。例如 commons.jar 和 commns-io.jar 两个jar包一起使用。

在 Servlet3.0 中对文件上传进行了支持,核心接口是Part接口(Post请求、流的操作),该接口中的核心方法如下:

方法声明方法描述
void delete()删除part对象对应文件项的基本存储,包括删除任何相关的临时磁盘文件。
String getContentType()请求上传文件的类型。
String getHeader(String name)获取上传文件内容的指定名字的请求头信息。
Collection getHeaderNames()获取上传文件请求的全部请求头名称,返回的是一个包含请求头名称的集合。
Collection getHeaders(String name)通过请求头名称,获取全部对应的请求信息,返回的是一个集合。
InputStream getInputStream()获取输入流。
String getName()获取控件的名字。
Long getSize()获取上传文件的大小。
void write(String fileName)将文件写入到物理磁盘。


在Servlet3.0版本中,请求接口提供了获取Part实例的方法:

方法声明方法描述
Part getPart(String name)根据上传控件名称获取上传文件对应的Part对象。
Collection getParts()获取所有上传文件对应的Part对象。

2、实现步骤


(1)在网页文件(html、jsp)的表单form中,添加编码类型的属性enctype。

	<!-- 文件上传:1、form添加设置编码类型的enctype属性 -->
	<form action="BlogServlet.do" method="post" enctype="multipart/form-data">
		<input type="file" name="myfile">
		<input type="submit" value="提交">
	</form>
  • enctype(encodetype)是编码类型。multipart/form-data 是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据。在默认情况下,enctype 的值是 application/x-www-form-urlencoded,不能用于文件上传,只有使用 multipart/form-data,才能完整的传递文件数据。

(2)在 Servlet 中添加注解 @MultipartConfig,使 Servlet 支持文件上传。

	@WebServlet(urlPatterns = "/BlogServlet.do")
	@MultipartConfig //文件上传:2、添加@MultipartConfig注解,支持文件上传
	public class BlogServlet extends HttpServlet {}

(3)从文件域获取上传的文件。

	//文件上传:3、获取上传文件
	Part part = request.getPart("myfile");

(4)将文件写入目标位置。

	// 文件上传:4、将文件写入目标位置(tomcat中的webapps下的picture目录)
	// 获取实际路径
	String path = request.getServletContext().getRealPath("/picture/");
	// 获取文件名
	String picpath = path+part.getSubmittedFileName();
	// 将文件写入目标位置
	part.write(picpath);


注意:在数据库只存储图片的路径,图片可以存储在Tomcat目录 - >webapps -> 当前部署的工程目录 -> picture。

二、富文本编辑器

1、简介


富文本编辑器(Rich Text Editor),简称 RTE,是一种可内嵌于浏览器,所见即所得的文本编辑器。它提供类似于 Microsoft Word 的编辑功能,容易被不会编写 HTML 并需要设置各种文本格式的用户所喜爱。
在这里插入图片描述

① wangEditor:http://www.wangeditor.com/

② Layui 富文本编辑器:https://www.layui.com/demo/layedit.html

③ ueditor:https://github.com/fex-team/ueditor

2、ueditor


(1)进入ueditor的发布页面。

在这里插入图片描述

(2)下载对应编码的 ueditor 压缩包。

在这里插入图片描述

(3)进入 ueditor1_4_3_3-utf8-jsp\utf8-jsp,将utf8-jsp目录下的文件和文件夹都放到 当前工程目录的WebContent文件夹下。

在这里插入图片描述
在这里插入图片描述

(4)将 WebContent\jsp\lib 目录下的 jar 文件复制到 WebContent\WEB-INF\lib 目录下,如果 jar 包没有进入编译环境,则需要将其加入编译环境(鼠标右键 -> Build Path -> Add to Build Path)。

在这里插入图片描述

(4)设置config.json文件中imageUrlPrefix为当前项目名,如 /UeditorProject

    "imageUrlPrefix": "/UeditorProject", /* 图片访问路径前缀 */


(5)在网页文件(html、JSP)中引入js库,并编写富文本编辑器的代码,此时访问该网页就会出现富文本编辑器。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>完整demo</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk" />
<script type="text/javascript" charset="utf-8" src="ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="ueditor.all.min.js">
	
</script>
<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
<script type="text/javascript" charset="utf-8" src="lang/zh-cn/zh-cn.js"></script>

<style type="text/css">
div {
	width: 100%;
}
</style>
</head>
<body>
	<div>
		<h1>完整demo</h1>
		<form action="bs.do" method="post">
			<input type="text" name="blogtitle"><br />
			<!-- 富文本编辑区域 -->
			<script id="editor" name="blogcontent" type="text/plain" style="width:600px;height:300px;"></script>
				<input type="submit" value="提交">
		</form>
	</div>
	<script type="text/javascript">
		//实例化编辑器
		//建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例
		var ue = UE.getEditor('editor');
	</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值