打造自己的相片上传工具【一】

原创作品,转载的话写对出处(http://www.jnan.org)和作者(jnduan)即可,别无要求。

==================================

在我接触的网站里,最早有上传插件的估计就是网易的相片上传插件了。后来,各大门户都有了类似的产品,但是共同点是:它们均以ActivX插件或IE toolbar形式存在,一方面,借助微软的市场占有率可以大面积覆盖用户;另一方面,也把其他平台的用户拒之门外。

Java在跨平台领域有着极大的优势。那么,能不能有这样一种技术,能够像IE插件一样易用,又能够在不同的平台上使用呢?

答案就是:Java WebStart技术。

不晓得Java WebStart技术的,可以参考官方的文档 Java Web Start Technology 这里就不多废话了。唯一要提一点的就是,Java WebStart技术要求使用的用户也要安装JRE。当然,对于会使用电脑上网的人来说,安装一个JRE也并非难事,一路next即可,话说回来,某些人可能会借此抨击,说ms的activex怎么不用装别的啊?那是因为ms都霸道的给你捆绑进去了,否则还不是.netframexxx一类的装一通……!况且,现在消费者JAVA运行时环境“(Consumer JRE)也出来beta版了,这对于webstart技术以及applet技术来说,无疑是利好的消息。

下面就分析一下整个插件(确切的说,这不算是一个插件,而是一个Java WebStart技术的应用了,所以,本文的标题使用了“程序”而非插件一词,下文同)的架构:

客户端其实就是一个依靠WebStart技术启动的Swing程序,负责浏览目录,显示、简单的处理、组织上传的功能,而服务器端就要有相应的程序接收上传的图片,并和相应的Web应用进行交互,将上传的图片呈现给用户。宏观上看,这是一个c/s架构的系统,服务器和客户端之间的通讯有很多选择,这里先不考虑。主要精力先放在上传程序的设计上。我们先来看看网易的上传插件长的什么样子:




该插件有3个比较重要的功能区域:

1.此处以树形显示了用户机器磁盘目录结构,只显示到“文件夹”级别,点击文件夹,在区域2则会列出该文件夹内的图片(jpg,gif,png格式)

2.在此区域列出的图片,在鼠标悬停其上时,有一些操作按钮(顺时针、逆时针旋转和放大操作):




双击区域2 的图片,会加入区域3,即上传列表中。

3.此处为待上传图片,双击此区域图片会从列表中删除。

有了上述分析,不难制定出本程序的一些功能点:

1.要树状遍历磁盘,显示到文件夹为止。同时要能罗列文件夹内指定格式的文件(这里是图片,将来可以是mp3什么的,自由配置,哈哈)

2.对于图片要在区域2内支持旋转,缩放等操作

3.要对选中的图片进行上传。

具体实现策略对应如下:

1.使用JTree,配合自己写的Renderer呈现出磁盘树,获取文件夹、图片一类的功能需求使用FileFilter和FilenameFilter即可

2.基本就是image和io的结合操作了

3.上传途径多种多样,目前考虑使用base64对图像编码,然后socket连接连上去传

整个软件的设计思路就这样,下一篇内容将关注磁盘树的创建与相关操作的具体实现。

加载评论框需要翻墙