直接上代码
<%@ page pageEncoding="gbk"%>
<%@page
import="java.util.*,java.io.*,
org.apache.commons.fileupload.FileItem,
org.apache.commons.fileupload.FileUploadException,
org.apache.commons.fileupload.disk.DiskFileItemFactory,
org.apache.commons.fileupload.servlet.ServletFileUpload,
java.util.concurrent.locks.*"%>
<%
String id = "";
String url = "";
String imgTitle = "";
String imgWidth = "";
String imgHeight = "";
String imgBorder = "";
String filePath = "";
String align = "";
String newName = null;
// **************************************
// 初始化上传工厂对象
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置上传工厂对象限制
factory.setSizeThreshold(1024 * 1024 * 20);
factory.setRepository(new File(request.getSession(true)
.getServletContext().getRealPath("/")));
// 创建上传对象
ServletFileUpload upload = new ServletFileUpload(factory);
//upload.setFileSizeMax(1024 * 1024 * 20);
List<FileItem> items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace(System.out);
}
for (Iterator<FileItem> i = items.iterator(); i.hasNext();) {
FileItem item = i.next();
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString("gbk");
if (name.equals("id")) {
id = value;
} else if (name.equals("imgTitle")) {
imgTitle = value;
} else if (name.equals("imgWidth")) {
imgWidth = value;
} else if (name.equals("imgHeight")) {
imgHeight = value;
} else if (name.equals("imgBorder")) {
imgBorder = value;
} else if (name.equals("align")) {
align = value;
} else if (name.equals("url")) {
filePath = value;
}
} else {
// 取得表单域名
String fieldName = item.getFieldName();
// 取得文件名
String fileName = item.getName();
// 取得文件类型
String contentType = item.getContentType();
final Lock lock = new ReentrantLock();
lock.lock();
try {
//加锁为防止同一时间文件名冲突
newName = System.currentTimeMillis()
+ fileName.substring(fileName.lastIndexOf("."),
fileName.length());
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
lock.unlock();
}
filePath = ".//notice/editor/updateFile/" + newName;
FileOutputStream fos = new FileOutputStream(request
.getSession().getServletContext().getRealPath("/")
+ "\\notice\\editor\\updateFile\\" + newName);
if (item.isInMemory()) {
fos.write(item.get());
fos.close();
} else {
InputStream in = item.getInputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
in.close();
fos.close();
}
}
}
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
String path1=basePath+"notice/editor/updateFile/" + newName;
out.println("<html><head><title>Insert Image</title><meta http-equiv='content-type' content='text/html; charset=gbk'/></head><body>");
out.println("<script type='text/javascript'>");
out.println("parent.parent.KE.plugin['image'].insert('" + id
+ "','" + path1 + "','" + imgTitle + "','" + imgWidth
+ "','" + imgHeight + "','" + imgBorder + "','" + align
+ "');</script>");
out.println("</body></html>");
%>
分享到:
相关推荐
KindEditor v3.4.2 .NET专用版的特点在于其丰富的功能集,如文本格式化、图片上传、链接管理、表格操作、多媒体插入等,这些都是构建内容管理系统(CMS)或论坛等Web应用时常用的功能。同时,它的API接口丰富,可以...
5. **图片上传与管理**:内置图片上传功能,支持图片预览和管理,方便用户上传和组织图片资源。 6. **视频和音频嵌入**:允许用户直接在编辑器中插入视频和音频,支持多种媒体格式。 7. **代码高亮**:对于程序员或...
在技术实现层面,"KindEditor"很可能采用了HTML5的File API来实现图片的本地预览和上传功能,同时结合了AJAX技术进行后台数据传输,以确保用户在上传大量图片时的流畅体验。为了优化上传速度和服务器存储空间,可能...
在“kindeditor上传视频、图片功能实现”中,我们将探讨如何利用KindEditor与Java后端配合,实现在网页上进行图片和视频的上传功能。 1. **KindEditor的图片上传功能**: KindEditor内建了图片上传的功能,用户...
这是本人写的一个基于KindEditor-4.1.9的Java项目,采用Struts2框架,实现了KindEditor单张图片上传、批量图片上传,可以上传到image目录下的子目录中,可返回上一级目录,并实现了按名称、大小、类型排序的功能。...
在H5版的KindEditor中,图片上传功能将基于HTML5的File API和FormData对象来实现,这使得用户无需Flash插件也能进行文件上传。 3. **File API**:这是HTML5引入的一套接口,允许JavaScript操作本地文件,包括读取、...
在使用 KindEditor 进行文本编辑时,一个常见的需求是实现图片上传功能,以便用户能够方便地将本地图片插入到编辑的内容中。本篇文章将详细介绍如何为 KindEditor 实现图片上传功能。 首先,我们需要理解 ...
本文将详细讲解如何在KindEditor中实现图片上传时携带token字段,以确保数据的安全性和完整性。 首先,理解“token”在Web开发中的作用至关重要。Token通常用于验证客户端请求的合法性,防止跨站请求伪造(Cross-...
总的来说,实现KindEditor上传图片自动压缩过大的图片,需要结合服务器端脚本处理和合适的图像处理库。这个过程不仅可以提高网站性能,也可以帮助维护服务器资源,为用户提供更好的体验。记得在实现时考虑错误处理和...
“粘贴时自动上传网络图片”是指当用户从剪贴板粘贴包含网络图片的文本时,编辑器会自动抓取这些图片并上传到服务器,然后替换为服务器上的图片链接。这需要监听编辑器的`paste`事件,解析HTML内容中的图片URL,然后...
KindEditor内置了图片和文件上传插件,用户可以直接在编辑器内上传图片或文件,无需离开当前页面。上传过程通常包括选择文件、预览、上传和返回编辑器,这些步骤都是自动化的。上传后的资源可以被嵌入到编辑内容中...
本文将详细介绍如何正确配置kindEditor实现多图上传功能,并着重讲解容易出错的地方——主要是路径配置以及确保系统给予控件上传图片的权限。 #### 二、环境准备 在开始配置之前,请确保已经安装并正确引入了以下...
### kindEditor4.1 版本中实现图片自适应的方法 #### 一、问题背景与需求分析 在使用kindEditor4.1版本时,我们可能会遇到一个常见的问题:上传的图片无法很好地适配不同大小的屏幕,导致在某些设备上出现拉伸或...
本主题主要探讨如何在KindEditor中实现多图上传功能,并解决因移除Flash导致的选择图片按钮无法展示的问题,同时添加上传后的图片结果展示。 一、多图上传功能 多图上传是现代富文本编辑器必备的功能之一,它允许...
vue 使用kindeditor粘贴复制图片上传给自己服务器,单独图片上传,避免用户到处寻找,解决了用户粘贴复制截图时候,图片变成base64,上传给后台的时候长度过于长,所以在粘贴的时候就上传给服务器,最后以形式显示在富...
3. **KindEditor配置问题**:检查KindEditor的配置文件(通常为`config.js`),确保批量上传图片的选项已正确开启。比如,`items`数组中应该包含'uploadimage', 'multiimage'等项。 4. **Flash上传脚本问题**:确认...
首先,我们需要理解KindEditor的上传机制。它使用Flash作为上传插件,因为Flash在过去的浏览器中具有较好的跨平台兼容性。然而,随着HTML5技术的发展,现代浏览器逐渐淘汰了Flash,转向了更安全、更高效的HTML5 API...
然而,原始的KindEditor可能并不直接支持图片上传后的压缩,这可能导致用户上传大尺寸图片时,服务器存储空间消耗过大,网页加载速度变慢等问题。 描述中提到的“带压缩图片功能”,意味着这个版本的KindEditor已经...
在这个主题中,我们将深入探讨如何在KindEditor中实现分页功能以及图片上传的完整代码实现。 首先,让我们了解一下KindEditor的基本结构。KindEditor是用JavaScript编写的,支持多语言,提供丰富的API和插件,可以...
通过使用`<input type="file">`标签和拖放API,我们可以实现多文件选择和无刷新上传,同时兼容现代浏览器,提供更好的用户体验。 2. **添加第三方视频代码功能**: 在内容编辑中,有时需要插入来自YouTube、Vimeo...