今天花了一点时间研究了一下FLEX的文件上传,后台采用PHP进行处理。本文的代码是整合了网上
查找到的一些代码,都是转载来转载去的,原文已经不可考,就不一一在这里列出,感谢前人的分享
精神,向他们学习吧。
1. 首先先介绍点基本知识,php端的全局变量$_FILES数组
$_FILES['userfile']['name'] 客户端机器文件的原名称。
$_FILES['userfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
$_FILES['userfile']['size'] 已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error'] 和该文件上传相关的错误代码。
2. php文件上传大小设置
file_uploads =
on //是否允许系统支持文件上传
;upload_tmp_dir //临时文件的存储路径,如果不设置就是系统默认的路径
upload_max_filesize = 2m //允许文件上传最大体积
post_max_size = 2m
//通过post方法给php时,php所能接受的最大数据容量
max_execution_time = 30
//每个script所执行的最大时间
memory_limit = 8m
//每个script所能消耗的最大memory
上面这些值都是php.ini的默认值,如果我们要传更大的文件,需要对当中的某些具体参数进行修改
一般上传的文件的信息都是保存在了$_FILES数组中,我们先来看一下PHP端如何处理。我们知道客户端上传的
文件保存在了系统默认的临时文件夹中,我们的目标就是要将临时文件夹中的文件拷贝到我们需要保存的地址当中去。
我们先来看一下PHP端的代码,将一一做出解释:
PHP端的代码比较简单,对上传的文件生成了一个独一无二的文件名,并对文件大小,文件名唯一性进行了简单的判断,
最后使用php的move_upload_flie函数来实现文件的移动。对于随即数,可以使用rand和mt_rand函数,据说mt_rand
要比rand要快很多,有兴趣的同学可以自己写个测试程序测试一下。
现在我们转到前端FLEX处理,Flex采用actionscript语言+xml语言。代码中有详细的注释,就不做详细说明了。