`
runningsnail
  • 浏览: 4666 次
  • 性别: Icon_minigender_1
  • 来自: 河南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

发现java版本FCKEditor编辑器上传文件后不能立即删除的BUG

阅读更多
以前一直使用FCK编辑器,没有发现什么问题,最近在做FCKEditor编辑器上传图片的时候自动生成图片的缩略图功能的时候发现上传后图片不能删除,系统提示图片正在使用中不能删除的提示框。
因为我是在struts2中使用的FCKEditor,感觉是struts2的问题,但是在查看了FCKEditor编辑器源码后发现时FCKEditor编辑器上传图片后文件流没有关闭产生的。虽然不是什么大的问题,但是如果释放到程序就做的完美了哈。

1. FCKEditor源码
net\fckeditor\connector\impl\AbstractLocalFileSystemConnector.java

	public String fileUpload(final ResourceType type,
			final String currentFolder, final String fileName,
			final InputStream inputStream)
			throws InvalidCurrentFolderException, WriteException {
		String absolutePath = getRealUserFilesAbsolutePath(RequestCycleHandler
				.getUserFilesAbsolutePath(ThreadLocalData.getRequest()));
		File typeDir = getOrCreateResourceTypeDir(absolutePath, type);
		File currentDir = new File(typeDir, currentFolder);
		if (!currentDir.exists() || !currentDir.isDirectory())
			throw new InvalidCurrentFolderException();

		File newFile = new File(currentDir, fileName);
		File fileToSave = UtilsFile.getUniqueFile(newFile.getAbsoluteFile());

		try {
			IOUtils.copyLarge(inputStream, new FileOutputStream(fileToSave));
		} catch (IOException e) {
			throw new WriteException();
		}
		return fileToSave.getName();
	}


注意在82行的这行代码
IOUtils.copyLarge(inputStream, new FileOutputStream(fileToSave));

inputStream是通过形参传递过来的,第二个参数直接生成了一个输出流FileOutputStream,程序结束。
这么一来就有问题,当函数返回的时候inputStream输入流并没有显示进行关闭,那么此时如果在服务器上面进行删除刚刚上传的文件的时候是不允许的。

解决方式如下:

IOUtils.copyLarge(inputStream, new FileOutputStream(fileToSave));
inputStream.close();


即可。
分享到:
评论
2 楼 xiu419 2013-08-13  
os好象也要关闭才行,我只清了is还是没办法删除
1 楼 suns3739 2012-08-13  


我也碰到了这个问题  一直认为是自己程序的问题

相关推荐

    fckeditor所需jar包集合及java源文件

    FCKeditor是一款知名的开源富文本编辑器,它允许用户在网页上进行富文本内容的创建和编辑。在Java环境中使用FCKeditor时,通常需要一些特定的库文件,即jar包,以及可能的源代码来支持其功能。下面将详细阐述...

    fckeditor-java-core-2.4.1

    在使用FCKeditor-java-core-2.4.1时,开发者需要将其引入到他们的Java Web项目中,配置相关的参数,如编辑器的宽度、高度、工具栏布局等,并在需要的地方调用API来初始化和使用编辑器。同时,为了保证安全性和用户...

    FCKeditor.zip及使用说明文档

    解压这些文件后,开发者可以查看源代码、样例、配置文件等,进一步了解编辑器的工作原理,或进行二次开发。 **fckeditor-java-2.4.1-bin.zip** 这个文件是FCKeditor的Java版本,包含用于Java应用集成的库文件。Java...

    fckeditor 文本编辑

    FCKeditor 2.6.3是该编辑器的一个特定版本,它可能包含了性能优化、bug修复以及新功能的添加。用户通常需要下载三个主要的组件来完整地使用FCKeditor: 1. FCKeditor_2.6.3.zip:这是FCKeditor的核心编辑器文件,...

    FCKEditor2.6.3完整版

    FCKEditor是一款强大的开源文本编辑器,主要用于网页内容的创建和编辑。它的全名是“FCKeditor”,在Web开发领域具有广泛的应用。版本2.6.3是该编辑器的一个稳定版本,提供了丰富的功能和良好的用户体验。在这个版本...

    fckeditor-java-2.4.1-src

    FCKeditor是一款基于Java的开源富文本编辑器,主要用于网页中的文字内容编辑。"fckeditor-java-2.4.1-src"是FCKeditor的源代码版本,版本号为2.4.1,这个压缩包包含了开发和定制FCKeditor所需的所有源文件。通过这个...

    FCKeditor_2.6.4.1包

    在Java EE环境中,开发者首先需要将FCKeditor的jar文件添加到项目类路径中,然后在需要使用编辑器的JSP页面中引入相应的JavaScript文件。通过设置HTML元素的`id`属性,可以将FCKeditor绑定到该元素,从而替换原有的...

    fckeditor 远程图片保存到本地插件

    2、修正原代码的BUG,保证了服务器能够一次性顺利转存文件内容; 3、采用FCKeditor的dialog组件显示而不是弹出窗口,使程序更美观; 4、采用时间戳作为文件名(待商榷); 5、config.php文件独立以便于修改; 6、代码大量...

    fckeditor2.4.2的jar包

    这个"lib"目录下的jar文件包含了FCKeditor的Java API,使得开发者可以通过Java代码与编辑器进行交互。例如,可以使用API初始化编辑器、设置初始内容、获取编辑后的内容以及配置编辑器的各项参数,如工具栏按钮、语言...

    FCKeditor_2.6.5和中文帮助文档

    FCKeditor 2.6.5是该编辑器的一个特定版本,它在2.6系列中提供了一些关键改进和功能增强。 1. **编辑器界面与功能** - **WYSIWYG(所见即所得)**: FCKeditor 提供了一个直观的界面,让用户在浏览器中看到的文本...

    FCKeditor(全)

    FCKeditor是一款功能强大的开源富文本编辑器,它在过去的Web开发中被广泛使用,尤其在JSP应用程序中,作为在线内容编辑的理想选择。这款编辑器允许用户在网页上直接编辑文字,添加图片,格式化文本,就像在桌面应用...

    FCKeditor_2.6.4.1 demo

    1. **富文本编辑器概述**:FCKeditor是一个JavaScript编写的在线编辑器,支持在网页中创建和编辑复杂格式的文本,包括加粗、斜体、插入图片、超链接、列表等。它为开发者提供了一种简单的方法,让用户能够在浏览器端...

    Fckeditor 已改过的.rar

    "Fckeditor 已改过的.rar"这个压缩包文件很可能包含了开发者对原始Fckeditor编辑器进行修改后的版本,以适应特定项目需求或者优化了某些功能。 在描述中提到的"http://apicode.gicp.net"可能是一个API代码库或者...

    FCKEditorForJava

    - **安装**:通常,FCKeditor会提供一个压缩包,如本例中的"FCKeditor2.4.3.rar",解压后将包含编辑器所需的JavaScript文件、CSS样式表以及图像资源。将其部署到Web应用的适当目录下。 - **配置**:配置FCKeditor与...

    FCK在线编译器和jar包

    FCK在线编译器是一款强大的富文本编辑器,主要用于网页中的文字内容编辑,它提供了丰富的文本格式化选项,包括字体、大小、颜色、对齐方式等,还支持插入图片、链接、表格等复杂元素,极大地提高了用户在网页端编辑...

Global site tag (gtag.js) - Google Analytics