`

Kindeditor图片上传、服务器端浏览用Groovy实现

阅读更多

贴代码——

 

我已经集成到JStore Desktop for Single的MVC里了,源码和例子请参考我的另一边BLOG,通过SVN下载——/webapp/WEB-INF/gy/tools.gy的后两个方法。

 

写法好简洁啊,比起Kindeditor例子JSP源码。

 

	// kindeditor image upload
	def Map img_json(){
		final String save_url = '/userfiles/'
		final String save_path = AppGlobal.getAppSrc(save_url)
		final int max_size = 1024 * 1024
		List ext_allow = ["gif", "jpg", "jpeg", "png", "bmp"]

		if(!params._files){
			return [output:JsonUtil.toJSON([error:'请选择文件。'])]
		}

		def item = params._files.itemList[0]
		if(item){
			byte[] binary = item.get()
			if(binary.size() > max_size){
				return [output:JsonUtil.toJSON([error:'上传文件大小超过限制。'])]
			}
			String file_ext = item.name.substring(item.name.lastIndexOf(".") + 1).toLowerCase()
			if(!(file_ext in ext_allow)){
				return [output:JsonUtil.toJSON([error:'文件格式不支持。'])] 
			}

			String name = System.currentTimeMillis() + '_' + new Random().nextInt(1000) + "." + file_ext

			try{
				item.write(new File(save_path, name))
			}catch(Exception e){
				return [output:JsonUtil.toJSON([error:'上传文件失败。'])]
			}

			return [output:JsonUtil.toJSON([error:0, url: save_url + name])]
		}

		return [output:JsonUtil.toJSON([error:'请选择文件。'])]
	}

	// kindeditor image file browser
	def Map file_json(){
		// TODO
		// diff save_path by user login
		final String save_url = '/userfiles/'
		final String save_path = AppGlobal.getAppSrc(save_url)
		final int max_size = 1024 * 1024
		List ext_allow = ["gif", "jpg", "jpeg", "png", "bmp"]

		String path = params.path?:''
		String order = params.order?params.order.toLowerCase():'name'
		if (path.indexOf("..") >= 0) 
			return [output:'No Allow.']
		if(path && !path.endsWith('/')) 
			return [output:'Parameter Invalid.']


		String up_dir_path = ''
		if(path){
			String str = path.substring(0, path.length() - 1)
			up_dir_path  = str.lastIndexOf("/") >= 0 ? str.substring(0, str.lastIndexOf("/") + 1) : ''
		}

		// current directory
		File cf = new File(save_path + path)
		if(!cf.exists() || !cf.isDirectory())
			return [output:'File not exists.']

		List files = []
		SimpleDateFormat ff = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
		cf.eachFile{
			files << [
				filename: it.name,
				datetime: ff.format(it.lastModified()),
				is_dir: it.isDirectory(), 
				has_file: it.isDirectory() && it.listFiles() != null,
				filesize: it.isFile()?it.length():1L,
				is_photo: it.isFile() && ext_allow.contains(it.name.substring(it.name.lastIndexOf(".") + 1).toLowerCase()),
				filetype: it.isFile()?it.name.substring(it.name.lastIndexOf(".") + 1).toLowerCase():''
			]
		}

		files.sort{
			'name' == order?it.name:('type' == order?it.filetype:it.filesize)
		}

		// return json data
		Map rr = [:]
		rr.moveup_dir_path = up_dir_path
		rr.current_dir_path = path
		rr.current_url = save_url + path
		rr.total_count = files.size()
		rr.file_list = files

		return [output:JsonUtil.toJSON(rr)]
	}
 
分享到:
评论
1 楼 senhui19 2010-10-30  
<p>嗯,从代码上看确实是精简了许多,不过就是不知道实战效果如何,有机会试试看看。</p>

相关推荐

    kindeditor图片上传携带token字段

    本文将详细讲解如何在KindEditor中实现图片上传时携带token字段,以确保数据的安全性和完整性。 首先,理解“token”在Web开发中的作用至关重要。Token通常用于验证客户端请求的合法性,防止跨站请求伪造(Cross-...

    vue 使用kindeditor粘贴复制图片上传给自己服务器,单独图片上传

    vue 使用kindeditor粘贴复制图片上传给自己服务器,单独图片上传,避免用户到处寻找,解决了用户粘贴复制截图时候,图片变成base64,上传给后台的时候长度过于长,所以在粘贴的时候就上传给服务器,最后以形式显示在富...

    kindeditor文本编辑器实例(包含本地图片上传及浏览服务器方法)

    总的来说,KindEditor文本编辑器实例提供了丰富的功能,包括本地图片上传、服务器浏览和自定义按钮等,帮助开发者构建高效、易用的在线编辑环境。正确配置和使用这些功能,能够提升网站的内容质量和用户体验。

    kindeditor上传图片自动压缩过大的图片

    总的来说,实现KindEditor上传图片自动压缩过大的图片,需要结合服务器端脚本处理和合适的图像处理库。这个过程不仅可以提高网站性能,也可以帮助维护服务器资源,为用户提供更好的体验。记得在实现时考虑错误处理和...

    kindeditor上传视频、图片功能实现

    在“kindeditor上传视频、图片功能实现”中,我们将探讨如何利用KindEditor与Java后端配合,实现在网页上进行图片和视频的上传功能。 1. **KindEditor的图片上传功能**: KindEditor内建了图片上传的功能,用户...

    为 KindEditor 实现图片上传

    在使用 KindEditor 进行文本编辑时,一个常见的需求是实现图片上传功能,以便用户能够方便地将本地图片插入到编辑的内容中。本篇文章将详细介绍如何为 KindEditor 实现图片上传功能。 首先,我们需要理解 ...

    kindEditor+图片批量上传

    "KindEditor图片批量上传工具"是一款专为网页设计者和内容创作者打造的高效图片上传解决方案。这款工具允许用户在Web界面一次性上传多张图片,极大地提升了工作效率,特别是对于那些需要频繁处理文字和图像,比如...

    KindEditor图片上传相关问题

    本文将深入探讨与KindEditor图片上传相关的问题,并结合提供的`UploadService.java`文件,解析图片上传服务的实现细节。 首先,我们需要了解KindEditor的图片上传流程。当用户在编辑器中选择插入图片时,KindEditor...

    KindEditor上传图片和管理图片

    在"KindEditor上传图片和管理图片"这个主题中,我们将探讨如何利用KindEditor实现图片的上传和管理,以及在实际应用中的一些考虑。 首先,让我们了解图片上传的基本过程。在KindEditor中,用户可以通过内置的图片...

    KindEditor-4.1.9批量上传图片完整示例(可以上传到image目录下的子目录中,可返回上一级目录,并实现了按名称、大小、类型排序的功能)

    这是本人写的一个基于KindEditor-4.1.9的Java项目,采用Struts2框架,实现了KindEditor单张图片上传、批量图片上传,可以上传到image目录下的子目录中,可返回上一级目录,并实现了按名称、大小、类型排序的功能。...

    kindeditor上传图片Demo

    这个"kindeditor上传图片Demo"是一个示例项目,旨在演示如何在KindEditor中集成图片上传功能。在开发过程中,开发者可能会遇到各种问题,比如权限设置、服务器端处理、前端交互等。在这个Demo中,作者可能已经解决了...

    完整版kindeditor修正上传图片问题

    1. **服务器端配置**:KindEditor的图片上传依赖于服务器端脚本处理文件上传请求。你需要确保服务器端代码(如PHP的`php/upload.php`)已经正确编写并且能够接收、保存和返回上传文件的信息。 2. **权限问题**:...

    kindeditor图片上传后生成带域名绝对路径配置及提交空格无法保存解决方法

    ### KindEditor 图片上传后生成带域名绝对路径配置方法 #### 一、KindEditor简介与配置背景 KindEditor是一款基于JavaScript的开源富文本编辑器,它具有轻量级且易于集成的特点,在许多Web项目中被广泛应用。对于...

    kindeditor图片删除功能

    在使用KindEditor时,用户可能会遇到上传图片后无法删除的问题。这个问题通常是由于编辑器的源代码中删除功能未被正确实现或配置不当导致的。针对这个情况,我们需要对KindEditor进行一定的修改来启用图片的删除功能...

    kindeditor富文本,多图上传,去除flash插件,解决无法展示选择图片按钮问题,以及添加上传后结果展示

    KindEditor的多图上传功能是通过与服务器端交互实现的,需要配置正确的上传URL和处理逻辑。移除Flash插件需要利用HTML5的File API和FormData对象,解决图片选择和预览。如果选择图片按钮不显示,检查配置和CSS样式。...

    kindEditor4.1版修改上传图片宽高(图片自适应)

    在使用kindEditor4.1版本时,我们可能会遇到一个常见的问题:上传的图片无法很好地适配不同大小的屏幕,导致在某些设备上出现拉伸或失真的现象。为了改善用户体验,我们需要实现图片自适应功能,即无论页面如何缩放...

    kindeditor多图上传H5版

    9. **后端接口设计**:H5版的KindEditor需要与服务器端接口配合,接收上传的图片并保存到服务器。开发者需要设计一个接收文件上传请求的API,并处理文件保存逻辑。 10. **响应式设计**:考虑到不同设备和屏幕尺寸,...

    kindEditor批量传图配置

    - **权限问题**:确保服务器端已为kindEditor控件提供了上传图片的权限。这通常涉及到服务器端配置和文件系统的权限设置。 - **服务器端处理脚本**:需要编写服务器端脚本来处理上传请求,通常会涉及到文件的保存...

    kindeditor添加图片压缩功能(Asp.net版)

    在Asp.net环境中,为了让用户上传的图片在服务器端自动进行压缩,提高网站性能并节省存储空间,我们需要为KindEditor添加图片压缩功能。本项目是作者针对这一需求自行实现的Asp.net版本。 在Asp.net中实现图片压缩...

    kindeditor(带压缩图片功能)

    然而,原始的KindEditor可能并不直接支持图片上传后的压缩,这可能导致用户上传大尺寸图片时,服务器存储空间消耗过大,网页加载速度变慢等问题。 描述中提到的“带压缩图片功能”,意味着这个版本的KindEditor已经...

Global site tag (gtag.js) - Google Analytics