搬离写了5年的渣度空间,准备把技术性的文章定在优快云了。这些都是文章备份。勿怪。。
(鉴于最近有些抓取机器和抄袭者,把标题的【原】字都复制,我不得不声明:本文为 yukon12345原创,转载请注明出处http://blog.youkuaiyun.com/yukon12345)
第二篇已经给基本功能实现了,但只实现这点功能远远不能说明flash上传的好处,那么这篇开始讲解如何展示待上传预览图。
以前实现flash批量上传图片时展示缩略图的最大难点在于,客户端脚本(js和as)为了安全考虑,都无法获得本地待上传图片的完整路径。
著名开源项目swfupload的预览图功能是将图片上传到服务器后,再由服务器返回缩略图,速度和功能远远达不到我们的要求。
flash player10+的推出使flash读取本地图片时将其加载入内存成为可能。因此百度的做法是用FileReference类的load()方法来获取图片数据再用Loader类的loadBytes()将FileReference.data加载入内存呈现。比如:
//加载
FileReference.load()
//呈现
Loader.loadBytes(FileReference.data)
当然读取是异步的,还需要侦听FileReference的Event.COMPLETE事件之后才呈现
关键步骤:
1.在FileReference/FileReferenceList的Event.SELECT事件后,开始FileReference.load(),并侦听Event.COMPLETE事件(打开文件载入内存完毕)。
2.在Event.COMPLETE事件处理函数中,使用Loader.loadBytes(FileReference.data)就可加载内存中数据显示。
下面的开始一步一步山寨百度图片上传
这次做的是单个图片上传。主要是集中在一些基础功能方面。不过改成批量上传也很容易。百度的批量上传也是先实现一个小的单个图片缩略图上传类Item,再批量实例化这个Item,来达到批量上传多个图片的功能。
源文件下载
文件放到web服务器后转到YItem.swf即可使用