`
sarin
  • 浏览: 1757141 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
E3b14d1f-4cc5-37dd-b820-b6af951740bc
Spring数据库访问系列...
浏览量:173686
C2083dc5-6474-39e2-993e-263652d27795
Android学习笔记
浏览量:368157
5f40a095-b33c-3e8e-8891-606fcf3b8d27
iBatis开发详解
浏览量:189285
B272a31d-e7bd-3eff-8cc4-c0624ee75fee
Objective-C学习...
浏览量:99864
社区版块
存档分类
最新评论

CKEditor 3开启文件上传功能(Servlet实现)

阅读更多
    本文在http://sarin.iteye.com/blog/599056介绍的基础之上进行进一步的研究。
    在CKEditor中把上传配置给打开,很简单,脚本段改为如下设置:
<script type="text/javascript">
      	CKEDITOR.replace('content',{filebrowserUploadUrl : '/ckeditor/ckeditor/uploader?Type=File',
filebrowserImageUploadUrl : '/ckeditor/ckeditor/uploader?Type=Image',
filebrowserFlashUploadUrl : '/ckeditor/ckeditor/uploader?Type=Flash'
      	});
</script>

    这里参数我们可以自己设置,加个Type为了区分文件类型,因为都使用同一个Servlet处理。事情没有这么简单,CKEditor毕竟是个复杂的组件,我们这么配置,看看它给我们还原成什么了吧,在FireFox中使用FireBug查看,看到了这些:

    看到了吧,在Type后面它为我们又挂接了几个参数,其中我们需要的是CKEditorFuncNum和file域的name值upload,CKEditorFuncNum这个参数是用来回调页面的,就是上传成功后,页面自动切换到“图像”选项卡。upload参数是servlet获取上传文件用的参数名。其余参数就根据需要进行了。
    这些参数的名称都是查看源码获得的,不能想当然。有了这些东西后面就好办了,就是文件上传了么。很简单了。这里我们使用apache commons组件中的fileupload和io。
先看web.xml,我们做些设置。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<servlet>
		<servlet-name>SimpleUploader</servlet-name>
		<servlet-class>ckeditor.CKEditorUploadServlet</servlet-class>
		<init-param>
			<param-name>baseDir</param-name>
			<param-value>/UserFiles/</param-value>
		</init-param>
		<init-param>
			<param-name>debug</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>enabled</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>AllowedExtensionsFile</param-name>
			<param-value></param-value>
		</init-param>
		<init-param>
			<param-name>DeniedExtensionsFile</param-name>
			<param-value>
				html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|ftl
			</param-value>
		</init-param>
		<init-param>
			<param-name>AllowedExtensionsImage</param-name>
			<param-value>jpg|gif|jpeg|png|bmp</param-value>
		</init-param>
		<init-param>
			<param-name>DeniedExtensionsImage</param-name>
			<param-value></param-value>
		</init-param>
		<init-param>
			<param-name>AllowedExtensionsFlash</param-name>
			<param-value>swf|fla</param-value>
		</init-param>
		<init-param>
			<param-name>DeniedExtensionsFlash</param-name>
			<param-value></param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>SimpleUploader</servlet-name>
		<url-pattern>/ckeditor/uploader</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>
</web-app>

    主要是Servlet的初始化参数,规定了文件上传的扩展名规则,就是允许上传的类型和阻止上传的类型。分为File,Image和FLASH三种,这个上传参数的设置是对应的。Debug是设置servlet知否进行debug,默认是关闭的。enabled是设置该servlet是否有效,如果禁止上传,就打成false。还有一个baseDir是设定CKEditor上传文件的存放位置。
    下面就是实现类了,比较长,但是有详细的注释:
package ckeditor;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class CKEditorUploadServlet extends HttpServlet {
	private static String baseDir;// CKEditor的根目录
	private static boolean debug = false;// 是否debug模式
	private static boolean enabled = false;// 是否开启CKEditor上传
	private static Hashtable allowedExtensions;// 允许的上传文件扩展名
	private static Hashtable deniedExtensions;// 阻止的上传文件扩展名
	private static SimpleDateFormat dirFormatter;// 目录命名格式:yyyyMM
	private static SimpleDateFormat fileFormatter;// 文件命名格式:yyyyMMddHHmmssSSS
	/**
	 * Servlet初始化方法
	 */
	public void init() throws ServletException {
		// 从web.xml中读取debug模式
		debug = (new Boolean(getInitParameter("debug"))).booleanValue();
		if (debug)
			System.out
					.println("\r\n---- SimpleUploaderServlet initialization started ----");
		// 格式化目录和文件命名方式
		dirFormatter = new SimpleDateFormat("yyyyMM");
		fileFormatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");
		// 从web.xml中获取根目录名称
		baseDir = getInitParameter("baseDir");
		// 从web.xml中获取是否可以进行文件上传
		enabled = (new Boolean(getInitParameter("enabled"))).booleanValue();
		if (baseDir == null)
			baseDir = "/UserFiles/";
		String realBaseDir = getServletContext().getRealPath(baseDir);
		File baseFile = new File(realBaseDir);
		if (!baseFile.exists()) {
			baseFile.mkdirs();
		}
		// 实例化允许的扩展名和阻止的扩展名
		allowedExtensions = new Hashtable(3);
		deniedExtensions = new Hashtable(3);
		// 从web.xml中读取配置信息
		allowedExtensions.put("File",
		stringToArrayList(getInitParameter("AllowedExtensionsFile")));
		deniedExtensions.put("File",
		stringToArrayList(getInitParameter("DeniedExtensionsFile")));
		allowedExtensions.put("Image",
	stringToArrayList(getInitParameter("AllowedExtensionsImage")));
		deniedExtensions.put("Image",			stringToArrayList(getInitParameter("DeniedExtensionsImage")));
		allowedExtensions.put("Flash",			stringToArrayList(getInitParameter("AllowedExtensionsFlash")));
		deniedExtensions.put("Flash",			stringToArrayList(getInitParameter("DeniedExtensionsFlash")));
		if (debug)
			System.out
					.println("---- SimpleUploaderServlet initialization completed ----\r\n");
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		if (debug)
			System.out.println("--- BEGIN DOPOST ---");
		response.setContentType("text/html; charset=UTF-8");
		response.setHeader("Cache-Control", "no-cache");
		PrintWriter out = response.getWriter();
		// 从请求参数中获取上传文件的类型:File/Image/Flash
		String typeStr = request.getParameter("Type");
		if (typeStr == null) {
			typeStr = "File";
		}
		if (debug)
			System.out.println(typeStr);
		// 实例化dNow对象,获取当前时间
		Date dNow = new Date();
		// 设定上传文件路径
		String currentPath = baseDir + typeStr + "/"
				+ dirFormatter.format(dNow);
		// 获得web应用的上传路径
		String currentDirPath = getServletContext().getRealPath(currentPath);
		// 判断文件夹是否存在,不存在则创建
		File dirTest = new File(currentDirPath);
		if (!dirTest.exists()) {
			dirTest.mkdirs();
		}
		// 将路径前加上web应用名
		currentPath = request.getContextPath() + currentPath;
		if (debug)
			System.out.println(currentDirPath);
		// 文件名和文件真实路径
		String newName = "";
		String fileUrl = "";
		if (enabled) {
			// 使用Apache Common组件中的fileupload进行文件上传
			FileItemFactory factory = new DiskFileItemFactory();
			ServletFileUpload upload = new ServletFileUpload(factory);
			try {
				List items = upload.parseRequest(request);
				Map fields = new HashMap();
				Iterator iter = items.iterator();
				while (iter.hasNext()) {
					FileItem item = (FileItem) iter.next();
					if (item.isFormField())
						fields.put(item.getFieldName(), item.getString());
					else
						fields.put(item.getFieldName(), item);
				}
				// CEKditor中file域的name值是upload
				FileItem uplFile = (FileItem) fields.get("upload");
				// 获取文件名并做处理
				String fileNameLong = uplFile.getName();
				fileNameLong = fileNameLong.replace('\\', '/');
				String[] pathParts = fileNameLong.split("/");
				String fileName = pathParts[pathParts.length - 1];
				// 获取文件扩展名
				String ext = getExtension(fileName);
				// 设置上传文件名
				fileName = fileFormatter.format(dNow) + "." + ext;
				// 获取文件名(无扩展名)
				String nameWithoutExt = getNameWithoutExtension(fileName);
				File pathToSave = new File(currentDirPath, fileName);
				fileUrl = currentPath + "/" + fileName;
				if (extIsAllowed(typeStr, ext)) {
					int counter = 1;
					while (pathToSave.exists()) {
						newName = nameWithoutExt + "_" + counter + "." + ext;
						fileUrl = currentPath + "/" + newName;
						pathToSave = new File(currentDirPath, newName);
						counter++;
					}
					uplFile.write(pathToSave);
				} else {
					if (debug)
						System.out.println("无效的文件类型: " + ext);
				}
			} catch (Exception ex) {
				if (debug)
					ex.printStackTrace();
			}
		} else {
			if (debug)
				System.out.println("未开启CKEditor上传功能");
		}
		// CKEditorFuncNum是回调时显示的位置,这个参数必须有
		String callback = request.getParameter("CKEditorFuncNum");
		out.println("<script type=\"text/javascript\">");
		out.println("window.parent.CKEDITOR.tools.callFunction(" + callback
				+ ",'" + fileUrl + "',''" + ")");
		out.println("</script>");
		out.flush();
		out.close();
		if (debug)
			System.out.println("--- END DOPOST ---");
	}
	/**
	 * 获取文件名的方法
	 */
	private static String getNameWithoutExtension(String fileName) {
		return fileName.substring(0, fileName.lastIndexOf("."));
	}
	/**
	 * 获取扩展名的方法
	 */
	private String getExtension(String fileName) {
		return fileName.substring(fileName.lastIndexOf(".") + 1);
	}
	/**
	 * 字符串像ArrayList转化的方法
	 */
	private ArrayList stringToArrayList(String str) {
		if (debug)
			System.out.println(str);
		String[] strArr = str.split("\\|");
		ArrayList tmp = new ArrayList();
		if (str.length() > 0) {
			for (int i = 0; i < strArr.length; ++i) {
				if (debug)
					System.out.println(i + " - " + strArr[i]);
				tmp.add(strArr[i].toLowerCase());
			}
		}
		return tmp;
	}
	/**
	 * 判断扩展名是否允许的方法
	 */
	private boolean extIsAllowed(String fileType, String ext) {
		ext = ext.toLowerCase();
		ArrayList allowList = (ArrayList) allowedExtensions.get(fileType);
		ArrayList denyList = (ArrayList) deniedExtensions.get(fileType);
		if (allowList.size() == 0) {
			if (denyList.contains(ext)) {
				return false;
			} else {
				return true;
			}
		}
		if (denyList.size() == 0) {
			if (allowList.contains(ext)) {
				return true;
			} else {
				return false;
			}
		}
		return false;
	}
}

    只要在页面中的script中设置了上传属性,我们打开图片时就能看到上传选项卡了,选择图片后,点击上传到服务器,上传成功就会自动跳到图像选项卡,可以看到源文件已经存在服务器的目标目录中了,此时,我们就可以在编辑器中编辑上传的图片了,非常方便。

    下面我们进行图片上传测试,可以看到如下效果。

    提交后可以看到,数据获得效果,是完全一致的,这样使用CKEditor上传文件就已经成功了。

    我们查看源文件,得到如下结果。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Display Content</title>
</head>
<body>
<center>
<table width="600" border="0" bordercolor="000000"
	style="table-layout: fixed;">
	<tbody>
		<tr>
			<td width="100" bordercolor="ffffff">主题:</td>
			<td width="500" bordercolor="ffffff">图片上传测试</td>
		</tr>
		<tr>
			<td valign="top" bordercolor="ffffff">内容:</td>
			<td valign="top" bordercolor="ffffff">
			<p style="text-align: center;"><span style="color: #f00;"><strong><span
				style="font-family: courier new, courier, monospace;"><span
				style="font-size: 48px;">图片上传测试</span></span></strong></span></p>
			<p style="text-align: center;"><img alt=""
				src="/ckeditor/UserFiles/Image/201002/20100217232748000.gif"
				style="width: 133px; height: 41px;"></p>
			<p style="text-align: center;"><span
				style="font-family: courier new, courier, monospace;"><br>
			</span></p>
			</td>
		</tr>
	</tbody>
</table>
</center>
</body>
</html>

    在服务器目录中,上传的文件已经存在其中了。

    欢迎交流,希望对使用者有用。附件中新增本项目的源码下载。
  • 大小: 37.9 KB
  • 大小: 37.8 KB
  • 大小: 21.1 KB
  • 大小: 16.3 KB
  • 大小: 4.1 KB
38
0
分享到:
评论
53 楼 gwgyk 2013-03-22  
还有个问题,我想给图片单独做张表,用来存储图片路径,但是在上传完图片以后,velocity中新闻还没有保存,自然也就没有id了,那么这个图片和新闻怎么对应起来呢?(我用的是spring + hibernate)
52 楼 gwgyk 2013-03-22  
你的意思是说不要用tomcat服务器了吗?那我也再没有用过别的啊?你用的是什么服务器?情况正常吗?
51 楼 sarin 2013-03-22  
gwgyk 写道
我在eclipse中的server上,点击“clean”之后,图片就会被删除了,而且有几次,tomcat启动的时候报错,说是存放图片的文件夹被进程占用,无法被删除。图片我要用,不想让图片背删掉,怎么办啊?我能给你发邮件吗?

根据你的描述,那么请不要使用集成在Eclipse中的tomcat组件,再试试。
50 楼 gwgyk 2013-03-22  
我在eclipse中的server上,点击“clean”之后,图片就会被删除了,而且有几次,tomcat启动的时候报错,说是存放图片的文件夹被进程占用,无法被删除。图片我要用,不想让图片背删掉,怎么办啊?我能给你发邮件吗?
49 楼 sarin 2013-03-20  
gwgyk 写道
我发现每次服务器重启之后,文本信息还在,但是图片却没有了,这时怎么回事啊?我用的是tomcat

请检查服务器关闭前后图片是否被删除,如果是,请不要使用eclipse的工作目录和集成的tomcat做测试。然后再观察一下。
48 楼 gwgyk 2013-03-20  
我发现每次服务器重启之后,文本信息还在,但是图片却没有了,这时怎么回事啊?我用的是tomcat
47 楼 sarin 2013-03-20  
// 获得web应用的上传路径  
        String currentDirPath = getServletContext().getRealPath(currentPath);  
gwgyk 写道
我还有个问题,这种方法是把图片上传到文件夹里保存了,那怎么样才能把多个图片的相对路径保存在数据库呢?因为我需要从数据库获取最新的图片显示在页面上

代码中有
String currentDirPath = getServletContext().getRealPath(currentPath);  
您可以参考
46 楼 gwgyk 2013-03-20  
我还有个问题,这种方法是把图片上传到文件夹里保存了,那怎么样才能把多个图片的相对路径保存在数据库呢?因为我需要从数据库获取最新的图片显示在页面上
45 楼 gwgyk 2013-03-20  
gwgyk 写道
sarin 写道
gwgyk 写道
你好,我想问下,每次运行之后,图片会保存在[color=blue]D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\CKEditor\UserFiles\Image\201303这个目录下,能不能像你的程序一样,直接保存在相对路径CKEditor\UserFiles\Image\201303下啊?[/color]

D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
这个不就是你项目的路径嘛,没错啊。

这个路径是绝对路径,UserFiles文件夹是在项目在运行的时候在这个路径下生成的,那么UserFiles文件夹就是这个路径的相对路径了?能加你qq么?我qq:664548870

那么是不是这样的,我们首先用的是相对路径(UserFiles),但是需要获取这个相对路径在计算机上的实际位置(绝对路径),然后才能在他下边建立文件夹?
44 楼 sarin 2013-03-19  
gwgyk 写道
sarin 写道
gwgyk 写道
你好,我想问下,每次运行之后,图片会保存在[color=blue]D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\CKEditor\UserFiles\Image\201303这个目录下,能不能像你的程序一样,直接保存在相对路径CKEditor\UserFiles\Image\201303下啊?[/color]

D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
这个不就是你项目的路径嘛,没错啊。

这个路径是绝对路径,UserFiles文件夹是在项目在运行的时候在这个路径下生成的,那么UserFiles文件夹就是这个路径的相对路径了?能加你qq么?我qq:664548870

是的,UserFiles文件夹是相对于你的Web应用的路径,那么从D盘开始的路径是你Web应用的绝对路径。
43 楼 gwgyk 2013-03-19  
sarin 写道
gwgyk 写道
你好,我想问下,每次运行之后,图片会保存在[color=blue]D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\CKEditor\UserFiles\Image\201303这个目录下,能不能像你的程序一样,直接保存在相对路径CKEditor\UserFiles\Image\201303下啊?[/color]

D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
这个不就是你项目的路径嘛,没错啊。

这个路径是绝对路径,UserFiles文件夹是在项目在运行的时候在这个路径下生成的,那么UserFiles文件夹就是这个路径的相对路径了?能加你qq么?我qq:664548870
42 楼 sarin 2013-03-19  
gwgyk 写道
你好,我想问下,每次运行之后,图片会保存在[color=blue]D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\CKEditor\UserFiles\Image\201303这个目录下,能不能像你的程序一样,直接保存在相对路径CKEditor\UserFiles\Image\201303下啊?[/color]

D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
这个不就是你项目的路径嘛,没错啊。
41 楼 gwgyk 2013-03-18  
你好,我想问下,每次运行之后,图片会保存在[color=blue]D:\dev\eclipse\workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\CKEditor\UserFiles\Image\201303这个目录下,能不能像你的程序一样,直接保存在相对路径CKEditor\UserFiles\Image\201303下啊?[/color]
40 楼 zhuchao_ko 2012-09-26  
String callback = request.getParameter("CKEditorFuncNum");  
149.        out.println("<script type=\"text/javascript\">");  
150.        out.println("window.parent.CKEDITOR.tools.callFunction(" + callback  
151.                + ",'" + fileUrl + "',''" + ")");  
152.        out.println("</script>");


就这句话 其它没难度。
39 楼 cfan_haifeng 2012-03-30  
紫竹星云 写道
中文怎么办啊

已经重命名了,所以貌似没有中文名的问题了
38 楼 紫竹星云 2012-03-29  
中文怎么办啊
37 楼 紫竹星云 2012-03-29  
用不了啊楼主 连ckeditor都显示不了,就是一个文本域
还有
'/ckeditor/ckeditor/uploader?Type=Image',
这是什么啊,我咋找不到uploader啊?
谢谢,在下学生,想学习
36 楼 cfan_haifeng 2012-03-22  
谢谢,省了大力。
另外可以在完善那么一点点,即上传错误的话,返回原来的页面。

out.println("<script type=\"text/javascript\">");
out.println("var random='"+Math.random()+"'");
out.println("alert('"+msg+"');");
out.println("history.go(-1);");

out.println("</script>");
35 楼 walker2009 2012-02-14  
强悍的楼主
34 楼 sarin 2012-01-04  
star882 写道
FILE类型的怎么上传的 我点图片上传 文件就保存在IMAGE文件夹内。

看最前面的JS代码,文件类型是在那儿确定的。

相关推荐

    CKEditor+CKFinder Java版本的整合

    3. **集成CKFinder**:在CKEditor的配置中,设置`filebrowserBrowseUrl`和`filebrowserUploadUrl`属性,指向CKFinder的URL,以启用文件浏览和上传功能。这样,当用户点击CKEditor中的"插入图像"或"插入链接"按钮时,...

    在web工程中整合ckeditor3.6和ckfinder2.0.2

    配置文件`config.xml`是CKFinder的核心设置,用于定义文件上传路径、权限、大小限制等。例如: ```xml &lt;!-- 将baseURL中的fckeditor替换为你的工程名 --&gt; &lt;baseURL&gt;/fckeditor/userfiles/ &lt;!-- maxSize=0 表示上传...

    jsp中ckeditor+ckfinder整合

    - 修改 **config.xml** 文件中的 `&lt;enabled&gt;` 标签为 `&lt;enabled&gt;true&lt;/enabled&gt;` 以开启文件上传功能。 - 修改 `&lt;baseURL&gt;` 标签以指定文件的上传路径。 #### 三、配置web.xml 接下来需要在项目的 **web.xml** ...

    ckditor在jsp中的使用

    对于图片上传,CKEditor提供了一个内置的文件上传插件,但默认不开启。需要配置`filebrowserBrowseUrl`、`filebrowserUploadUrl`等相关选项,或者使用CKFinder等文件管理器进行集成。 7. **与后端交互**: 当用户...

    技術分享_elFinder1

    5. **HTML5拖放上传**:背景文件上传功能,支持HTML5拖放。 6. **列表和图标视图**:用户可以选择以列表或图标形式查看文件。 7. **键盘快捷键**:提高操作效率。 8. **选择文件/组的方法**:鼠标或键盘的标准选择...

    fckeditor简单实例

    5. **处理文件上传**:如果需要支持文件上传,需要创建一个Java Servlet来处理FCKeditor的POST请求。FCKeditor会将文件内容作为POST请求的一部分发送到服务器。 6. **测试与调试**:最后,运行你的Web应用,测试...

    Java FCKEditor升级版本

    6. **处理文件上传**:FCKeditor支持文件上传功能,需要在服务器端编写处理文件上传的代码,通常使用Servlet或Struts Action来接收上传的文件并保存到服务器。 7. **安全考虑**:在实际应用中,必须注意FCKeditor的...

    在jsp环境中配置使用FCKEditor

    3. **配置web.xml**:打开FCKeditor-2.3/web/WEB-INF/web.xml文件,找到两个`servlet`和`servlet-mapping`的定义。将这两个配置复制到你的项目中的web.xml文件,但需要修改`url-pattern`,将原来的路径改为与你的...

    jsp版ewebeditor 内涵自己总结的错误修改方法

    - **上传设置**:如果涉及文件上传功能,要检查`config.json`或`ewebeditor.config.js`中的上传路径和URL设置,确保服务器可以访问并处理上传请求。 2. **浏览器兼容性**: - EWebEditor主要基于IE浏览器开发,...

    java开源包3

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    JAVA上百实例源码以及开源项目源代码

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    FCKeditor 在JSP上的完全安装.doc

    - 修改`web.xml`文件,确保SimpleUploader的Servlet启用(将enabled参数值设为true),同时设置Connector Servlet的baseDir参数指向文件上传的目录。 4. **添加TLD文件定义**: - 在`web.xml`中添加以下代码以...

    java开源包4

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包1

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包11

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包2

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包6

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包5

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包10

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

Global site tag (gtag.js) - Google Analytics