PHP实现文件上传例子 |
作者:Andy.m 时间: 2003-11-17 文档类型:转载 来自:
|
实例1: 上载文件表单网页:updatefile.htm [Ctrl+A 全部选择 然后拷贝] 处理上载文件网页:updatefile.php3 [Ctrl+A 全部选择 然后拷贝]注意:文件上载后必须拷贝到新的地方或重新更名,否则当进程执行完后,上载样本将被删除 实例2: PHP3是一种非常强大的CGI脚本语言,就其语言特点基本上源于C,就其实现方式而言更象PERL,而其对数据库的内在支持更使之成为ASP的强大对手。 首先在前台必须有一个界面 [Ctrl+A 全部选择 然后拷贝] 值得注意的是一个 MAX_FILE_SIZE的隐藏值域,通过设置其VALUE可以限制上载文件的大小。 然后在后台实现文件上载操作。如果只是最基本的上载,寥寥几行就可以搞定
因为form传递过来的值自动赋值给同名变量,所以直接通过$UploadFile可以访问上载的文件,但由于这是一个保存文件的变量,因此文件名字必须通过另外一个$UploadFile_name变量取得。在拷贝文件后删去临时文件(unlink)。 上面的代码完全可以工作,但实际应用中漏洞百出,让我们逐步来完善之首先,上载的文件必须有一个固定的目录保存,我们在这里用一个$UploadPath变量保存之,如$UploadPath = "/home/flier/upload/"; 或复杂一点的自动定位,如 $UploadPath = AddSlashes(dirname($PATH_TRANSLATED))."//upload//"; 我们假定以其一个名为upload的子目录来保存上载的文件。dirname函数返回其目录名,然后加上子目录名然后用一个变量$FileName保存完整的上载后文件名和路径 $FileName = $UploadPath.$UploadFile_name; 其次,我们还想让用户得知上载文件的简要信息,如上载文件的大小if($UploadFile_size <1024) { //上载文件大小 然后我们应该考虑到大文件上载时容易出现超时的情况,可以用set_time_limit($TimeLimit);加大超时限制时间。 最后,把截面和实现代码综合到一个单独的文件中,为了实现这个想法,我们通过在 form中添加一个隐含值<INPUT TYPE = "hidden" NAME = "UploadAction" VALUE = "1">指出当前的状态(界面或实现),以便区分对待完成代码如下: upload.php3: [Ctrl+A 全部选择 然后拷贝]<? |