所用到的编辑器:kindeditor-v4.0.6
先看图:
个人觉得kd比fckeditor要好用一些。
虽然编辑器是有自带的上传功能的,但是确实也有不方便之处。所以自己手动做一个。
关于jsp中整合editor的内容就不赘述了。
我这里用的是kindeditor的simple模式,比较简洁。
1,首先给出upload.jsp的代码
<%@ include file="/WEB-INF/page/share/taglib.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
上传附件:
<html:form action="/attachedUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file"/><input type="submit" value="上传"/>
</html:form>
您最近上传的附件:<br/>
<c:forEach items="${attacheds}" var="data">
<c:if test="${data.ext=='img'}">
附件:<img src="${data.path}" width="20" height="20"/> <input type="button" name="${data.path}" onClick="javascript:parent.insertAttached('${data.path}','${data.ext}');" value="插入到编辑器"><br/>
</c:if>
<c:if test="${data.ext=='file'}">
附件:<img src="<%=request.getContextPath() %>/img/file.png" width="20" height="20"/> <input type="button" name="${data.path}" onClick="javascript:parent.insertAttached('${data.path}','${data.ext}');" value="插入到编辑器"><br/>
</c:if>
</c:forEach>
</body>
</html>
@这个jsp 是要以frame的形式嵌入到文章发表界面。
这里面区分了图片文件和普通文件,若上传的是图片文件 则点【插入编辑器】后 编辑器的光标位置会加入<img src='...'/>,反之则加入<a href='...'></a>。从开头的那张图可以看得出来。
2.然后是【插入到编辑器】这个按钮,点击后调用父窗口的.insertAttached 方法。该方法在帖子发表页面中声明。
function insertAttached(src,ext){
if(ext=="img"){
var html = "<img src='"+src+"'/>";
}else{
var html = "<a href='"+src+"'>【附件:编辑附件名称】</a>";
}
editor.insertHtml(html);
}
@关于editor 这个对象,是kindeditor内置的,在jsp页面中引入该编辑器时创建。
editor.insertHtml(html)这个方法则是在光标位置插入内容。
可以参看 kindeditor 的文档
http://www.kindsoft.net/docs/editor.html#inserthtml-val
3.好了,现在去看看后端是怎么做的.
环境:struts1.3 hibernate3 spring2.5
首先在加载upload.jsp之前,先访问/attachedUpload.do
/**
* 附件上传
* @author 赵俊夫
*
* 2012-4-18
*/
@Controller(value="/attachedUpload")
public class AttachedUploadAction extends Action {
@Resource(name="attachedDao")
private AttachedDao attachedDao;
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
/**Struts1 的 formbean*/
AttachedForm f = (AttachedForm) form;
/**创建一个附件 对象 我们这里把附件定义成对象,在数据库中与用户Many to one 关联*/
Attached attached=null;
/**工具类 作用:拿到session中的登录用户*/
UserUtil uu = new UserUtil(request);
User loginUser = uu.getLoginUser();
/**如果已经登录*/
if(loginUser!=null){
if(f.getFile()!=null){
/** 工具类:读配置文件*/
OptionBean op = new OptionBean(request);
/**上传格式校验*/
if(!UploadUtil.validateUploadAll(f.getFile())){
request.setAttribute("message", "格式不允许!");
request.setAttribute("urladdress", UrlUtil.parseUrl(request,
"upload"));
return mapping.findForward("message");
}
/**上传文件后会有信息返回:文件的路径等*/
UploadBean bean = UploadUtil.doUploadByTime(f.getFile(), op.getAttachedLocation(), request);
String id = bean.getCode();
String path = bean.getvPath();
attached = new Attached();
attached.setId(id);
attached.setPath(path);
/**附件与用户多对一关联*/
attached.setUser(loginUser);
/**将附件持久化到数据库*/
attachedDao.persist(attached);
}
}
/**获取当前用户最近上传的10条附件记录 并发送到request区域供.jsp页面使用*/
Set<Criterion> criterions = new LinkedHashSet<Criterion>();
criterions.add(Restrictions.eq("user", loginUser));
Set<Order> orders = new LinkedHashSet<Order>();
orders.add(Order.desc("date"));
List<Attached> datas = attachedDao.getScrollData(Attached.class, 0, 10, criterions, orders);
/**
* 数据存放
*/
request.setAttribute("attacheds", datas);
return mapping.findForward("upload");
}
}
有点乱了,今天才把fckeditor换掉了,在iteye喜欢上了简洁。
上面代码用到了UploadUtil
代码如下:
public class UploadUtil {
/**图片格式数组*/
public static final String[] imageExts = {".gif",".jpg",".jpeg",".png",".tmp"};
/**文件格式数组*/
public static final String[] fileExts = {".rar",".zip"};
@SuppressWarnings("deprecation")
public static UploadBean doUploadByTime(FormFile formfile,String path,HttpServletRequest request) throws FileNotFoundException, IOException{
String ext = HeadPic.getExt(formfile.getFileName());
String fmt = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date())+new Random().nextInt(1000);
String code = fmt;
String filename = code+ext;
byte[] filedata = formfile.getFileData();
String realPath = request.getRealPath(path);
File dir = new File(realPath);
if(!dir.exists()){
dir.mkdirs();
}
String filePath = realPath+File.separator+filename;
String vPath = request.getContextPath()+path+filename;
FileOutputStream fos = new FileOutputStream(new File(filePath));
fos.write(filedata);
fos.close();
UploadBean bean = new UploadBean();
bean.setCode(code);
bean.setvPath(vPath);
return bean;
}
public static boolean validateUpload(FormFile formfile,String[] allowTypes){
String filename = formfile.getFileName();
String ext = HeadPic.getExt(filename);
for(String t:allowTypes){
if(t.toLowerCase().equals(ext.toLowerCase())){
return true;
}
}
return false;
}
public static boolean validateUploadImage(FormFile formfile){
if(validateUpload(formfile, imageExts))
return true;
else
return false;
}
public static boolean validateUploadFile(FormFile formfile){
if(validateUpload(formfile, fileExts))
return true;
else
return false;
}
public static boolean validateUploadAll(FormFile formfile){
if(validateUploadFile(formfile) || validateUploadImage(formfile)){
return true;
}
else{
return false;
}
}
}
- 大小: 37.4 KB
分享到:
相关推荐
JSP版的完善KindEditor在线编辑器(带附件上传与图片按日期分类管理功能) 1.集合了日期、时间、在线预览和特殊字符插件,采用3.0皮肤; 2.将图片上传与管理的JSP页面改写成SERVLET,同时去除JSON包; 3.添加图片压缩...
例如,开发者可能会使用Docker进行容器化部署,使用Jenkins进行持续集成和持续部署,使用Postman进行API测试,或是使用Visual Studio Code这样的轻量级编辑器提高开发效率。 姜铁的简历可能会详细列出他在这些领域...
模仿iteye代码高亮显示,意味着我们要实现一个类似的功能,使得代码在网页上展示时,关键字、变量、函数等元素能够以不同的颜色和样式突出显示。iteye是一个知名的开发者社区,它提供了良好的代码高亮功能,这有助于...
ckeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多WEB项目和大型...
此次“ITEYE手机阅读器更新”可能涉及到的功能改进、性能优化或者新特性添加,具体细节可以通过提供的博文链接(已失效)进一步了解。 作为一款工具软件,源码的更新通常意味着开发者对应用程序进行了以下几方面的...
自己编写的文本编辑器3
iTunesSetup.exe
Word网页编辑器.rar 博文链接:https://xinlingwuyu.iteye.com/blog/193665
NULL 博文链接:https://java-flex.iteye.com/blog/866211
附件精灵2是一款功能强大,可以通吃所有论坛所有常见附件的小工具,尤其能突破限制,随意下载需要论坛币的附件!下载解压后首先执行 Setup.bat,然后要将你的屏幕颜色质量调为32位,否则会出现Run-time error错误
UE文本编辑器UE文本编辑器
博文链接:https://zzwwyf.iteye.com/blog/231513
Hibernate参考文档3.1.2 博文链接:https://tenn.iteye.com/blog/134826
有点像Qzone里的日志编辑器 博文链接:https://struts2.iteye.com/blog/196646
博文链接:https://dapeng.iteye.com/blog/140861
NULL 博文链接:https://hcmfys.iteye.com/blog/1696497
附件自动下载工具,这个工具可以批量的下载邮箱的附件,但是加了密码,不是我加的,我正在找密码
NULL 博文链接:https://uule.iteye.com/blog/2115834