将旧版本的 eWebEditor 从 ASP 版改造为 JSP 版


之前一个旧网站项目改版,发布系统的编辑器使用的 eWebEditor 5.2,开发语言是 ASP 的。
现在要用 Java 重新写,其他所有东西都不变。其他都好说,唯独这个编辑器的改造出了点小麻烦。

其实也不算很难,主要是对它不熟悉,后来看了一下源代码,才发现还是很简单的,改一点点就可以了。
核心的东西就改一下编辑器的上传的功能,其他不需要改动。方法如下:

1、首先找到上传的表单,将请求的路径改为 JSP 的路径。
dialog 目录下 dialog.js 文件中 getUploadForm 方法
	var n_MaxSize = parseFloat(s_MaxSize)*1024;
	var html = "<iframe name='myuploadformtarget' style='display:none;position:absolute;width:0px;height:0px' src='blank.htm'></iframe>"
		+"<form action='../uploadfile.do?type="+s_Type+"' method=post name=myuploadform enctype='multipart/form-data' style='margin:0px;padding:0px;width:100%;border:0px' target='myuploadformtarget'>"
		+"<input type=file name='uploadfile' size=1 style='width:100%' onchange=\"this.form.originalfile.value=this.value;try{doPreview();} catch(e){}\">"
		+"<input type=hidden name='originalfile' value=''>"
		+"</form>";

上传文件都使用了统一的一个表单,至于是什么类型的文件,通过参数 s_Type 区分。


2、修改好请求路径后,我们用 Java 来实现上传的功能。
有一点要注意,上传文件成功后,要返回给浏览器端一段 JavaScript 代码,用来回调一些方法和提示用户信息。

		String type = request.getParameter("type");// 取得上文件的类型
		FileItem file = f.getFileItem("uploadfile");// 取得文件的对象,我自己修改的 fileupload 功能
		if (file != null) {
			String fileExt = file.getFileExt();// 修改文件名称,取得扩展名
			fileName = DateUtil.getSimpleDateTime().concat(".").concat(fileExt);
			if("media".equals(type)) {// 不同文件类型上传到服务器不同目录
				fileName = "wmv/" + fileName;
			}
			fileName = fileName.toLowerCase();
			file.write(uploadPath + fileName);// 写入文件
			// 成功,返回的 JavaScript 代码
			js = "<script language=javascript>parent.UploadSaved('" + contextPath + "/uploadfile/" + fileName + "');var obj=parent.dialogArguments.dialogArguments;if (!obj) obj=parent.dialogArguments;try{obj.addUploadFile('" + file.getName() + "', '" + fileName + "', '" + uploadPath+fileName + "');} catch(e){};history.back()</script>";
		} else {
			// 失败,返回的 JavaScript 代码
			js = "<script language=javascript>parent.UploadError('size');</script>";
		}
		// 输出 JavaScript 代码
		response.getWriter().print(js);
		response.getWriter().flush();
		response.getWriter().close();


你可能感兴趣的:(jsp,asp)