经过大半个月的折腾,终于可以出一个自己比较认可的版本。这次心的自我挑衅过程,感觉自己又有成长,还是很想记录一下。过程挺不容易的。
20130514
需求是:实现像QQ邮箱那样的附件上传功能,而且要做成通用的标签文件。供大家调用!
对于一个纯JAVA程序员来说,还是有点难度的。
难点1:如何把之前文件上传控件变成一个按钮?
2:如何获取本地文件的大小?
3:还要支持弹出框?
经过选型,最后选择了OperaMasks-UI的omFileUpload组件。
omFileUpload的最基本用法。action属性指定处理文件上传的服务端地址。swf属性指定处理上传的swf的文件位置。onComplete为上传成功后的回调函数。
在使用过程中,遇到了一些问题。
1.如何和现有的架构结合。struts1.x+spring3.0
2.一个按钮如何变成链接? (感觉很猥琐)
3.显示效果样式如何调整?
4.还有很多顾虑,比如进度条是真的吗?
。。。。。
带着很多问题上路。
=======================================================
20130520
一开始,对这个控件不熟悉,很多不懂怎么用,捣腾了下,又想换别的,比如SWFUPLOAD。。主要还是自己只会JAVA,很多东西受到了限制。
最后还是决定使用operamasks omFileUpload控件。对控件做了一些调整。
还是用了透明技术,以及样式的绝对定位。
最后因为绝对定位的问题,不得不使用了iframe。。。虽然DIV可以实现,但是使用的时候需要去绝对定位它,为了通用性还是决定用iframe.( 后来发现这种想法是错误的。)
强大的样式,可以实现这样的定位。经过一段时间的针扎,最后不得不直接copy QQ邮箱的样式。多亏了强大的浏览器。
贴代码:
<script type="text/javascript"> $(document).ready(function() { $('#file_upload').omFileUpload({ action : 'uploadFile.shtml', swf : 'om-fileupload.swf', width : 300, height: 300, multi :true, queueSizeLimit : 10, //autoUpload : true, removeCompleted:false, onComplete : function(ID,fileObj,response,data,event){ var jsonData =""; try{ jsonData = eval("("+response+")"); }catch(e){ alert("出错,请联系管理员!"); } $("#" + $(event.target).attr('id') + ID).find('.percentage').html("<a target=\"_blank\" href="+jsonData.fileUrl+">点击浏览</a>"); } }); }); </script>
<div class="input_title" style="padding-top: 10px; padding-bottom: 8px;" > <span id="attachupload" style="display: none;"></span> <span id="composecontainer"><span class="compose_toolbtn qmEditorAttach dragAndDropTrap_box"> <span title="添加小于 50M 的文件作为附件" id="AttachFrame" style="position: relative;" sizelimit="50"> <span style="left: 0px; top: 0px; width: 66px; height: 16px; overflow: hidden; filter: alpha(opacity=0); position: absolute; z-index: 1; cursor: pointer; zoom: 1; opacity: 0; background-color: rgb(255, 255, 255);"> <input style="width: 200px; height: 200px; right: 0px; font-family: Times; font-size: 50px; position: absolute; cursor: pointer;" id="file_upload" name="file_upload" type="file" /></span> <a class="compose_toolbtn_text ico_att" onmousedown="return false;" onclick="return false;"> <span id=sAddAtt1>添加附件</SPAN> <span style="DISPLAY: none" id=sAddAtt2 onmousedown="return false;" onclick="return false;">继续添加</span></a> <button value="上传" onclick="$('#file_upload1').omFileUpload('upload')">上传</button>
效果:
选择完后:
上传按钮可以通过配置实现是否出来,是自动上传还是用按钮。
5月22日出第一雏形。文件是通过链接下载的,后来需求说直接读库。所以后续又做了调整。
5月22号刚好遇到了笔记本坏掉了,以及还要处理的其他事情,没有完整的一段时间做这个东西,断断续续的,而且还出现了一些不好的小情绪的影响。一路下来,还好折腾出来了。
java代码部分后续文章中写。
相关推荐
本篇文章将详细介绍如何在Maximo 7.5系统中实现附件上传功能,并说明这一配置在Maximo 7.1中同样适用。 1. **配置步骤** - **系统设置**:首先,你需要在Maximo系统的“系统设置”中启用附件功能。进入“系统设置...
本篇文章将深入探讨如何在Flask前端客户端和服务端之间传输文件,并允许用户直接在前端下载源文件。 首先,我们需要理解Flask中的文件处理机制。当客户端(通常是Web浏览器)向服务器发送文件时,通常会通过HTTP的...
这篇博客"Spring2.5 MVC -- 基于注解的附件上传"详细介绍了如何在Spring MVC 2.5中实现这一功能。 首先,我们需要了解Spring MVC中处理文件上传的基本概念。文件上传主要涉及到两个组件:`MultipartResolver`和`@...
`images`目录则用于存储用户上传的图片或者其他媒体资源,可能包括微博中的图片附件。 总的来说,这个项目涵盖了Web开发中的基础元素,包括前端交互、后端处理和数据库管理。通过这样的实践,开发者可以更深入地...
总的来说,实现上传附件功能需要前端与后端的协同工作,前端负责文件的选择和预览,后端负责文件的接收、存储以及数据的持久化。理解这一过程对于开发任何涉及文件上传的应用都是至关重要的。在实际开发中,还要考虑...
本篇文章将深入探讨多附件上传的核心知识点,包括其原理、实现方式以及相关的前端和后端技术。 首先,我们要理解多附件上传的基本原理。传统的HTTP协议并不支持多文件并发上传,因此在早期的网页设计中,如果需要...
本篇将重点讲解如何实现基于HTML5的多图片上传及取消上传的机制。 在HTML5中,File API的引入使得直接在浏览器端处理文件变得可能,包括读取、写入和上传文件。多图片上传的核心在于`<input type="file">`元素的`...
这篇文档将深入解析标题"前端学生作业毕设实训素材-响应式博客新闻主题模板(自适应手机端)"以及描述中提到的知识点,并结合压缩包内的文件名称列表进行详细阐述。 前端开发是创建网页或应用程序的过程,它涉及用户...
这篇博客文章可能详细探讨了实现这一功能的过程,虽然具体内容无法直接获取,但从标题和标签我们可以推测出一些关键知识点。 1. **文件上传原理**: 文件上传涉及到HTTP协议中的POST请求。用户在前端选择文件后,...
这篇教程将围绕“前端学生作业毕设实训素材-辅导培训机构留学教育类企业模板.rar”这一主题,深入探讨其中涉及的前端开发技术、毕业设计过程以及相关资源。首先,这个压缩包是一个前端应用的源码集合,特别适用于...
本篇将详细讲解如何在Android中实现文件上传,并结合“亲测可用”的控件来探讨具体实践。 首先,我们需要了解Android中的文件操作。Android系统提供了一系列API,允许开发者读取、写入和管理本地文件。例如,你可以...
**图片和附件上传的实现** 1. **配置KindEditor**: 首先,需要在项目中引入KindEditor的JavaScript库和CSS样式文件。在编辑器的初始化时,配置上传功能,通常包括设置URL(服务器端接收上传请求的地址)、允许的文件...
本篇将详细介绍如何在Java JSP中实现文件上传,以及如何处理上传的附件。 首先,让我们理解文件上传的基本原理。在HTML表单中,我们可以使用`<input type="file">`标签让用户选择本地文件进行上传。然而,JSP本身并...
这篇教程将围绕“前端学生作业毕设实训素材-金黄色金融投资信息类企业模板.rar”这一主题,深入探讨其中涉及的前端开发知识点。这个压缩包包含了一套完整的前端应用源码,非常适合学生作为毕业设计的学习资源。让...
这篇教程将围绕“前端学生作业毕设实训素材-大气互联网服务机构类企业公司模板(带wap).rar”这一主题,深入探讨相关知识点,帮助你理解和掌握前端开发中的关键技术和实践。 一、前端源码与毕业设计 前端源码是构建...
这篇文档将深入解析标题为"前端学生作业毕设实训素材-环境与社会发展中心部门企业网站模板.rar"的压缩包文件中的关键知识点,该文件主要针对前端开发的学习者,特别是那些正在进行毕业设计的学生。这个资源包括了一...
本篇文章将详细介绍如何利用Vue.js作为前端框架结合Java后端实现文件的上传功能。 #### 二、前端Vue.js部分 **1. 文件选择与读取** 前端主要通过HTML5的`input`标签实现文件的选择,再通过JavaScript处理用户选择...
这篇博客文章将深入探讨如何在JSP中集成并使用JS上传组件。 首先,我们要了解JavaScript的作用。JS是一种客户端脚本语言,主要负责处理用户交互、验证表单数据以及动态更新网页内容。在上传组件中,JS通常用来提供...
这个2.3.1版本提供了稳定的上传功能,并且兼容性良好,适合用于网页中的附件上传需求。在本篇文章中,我们将深入探讨Plupload的工作原理、特性以及如何在项目中集成和使用它。 1. **工作原理** Plupload 使用Flash...