不用数据库的多用户文件自由上传投票系统(3)
2006-10-09 00:00
471 查看
这是本系统的第四个文件.upload.php主要负责,文件名的校验
,上传文件和文件地址的归档
<html>
<head><title>文件上传</title>
<body><div style="width:750"><center>
<?php
//上传的栏目$col,$upfile上传的文件,$writer作者,$intro简介
$writer=substr(htmlspecialchars($writer),0,20);
$intro=substr(htmlspecialchars($intro),0,100);
$maxsize=512000*2;//最大的文件长度
$pathtemp=explode("/",$HTTP_ENV_VARS["PATH_INFO"]);
$pathtemp[sizeof($pathtemp)-1]="";
$cgiroot="http://".$HTTP_HOST.implode("/",$pathtemp);//主机加当前目录
//$cgiroot="http://eccct.51.net/cgi-bin/";
$uploadto="../uploadfile/".$col."/";//上传到的子目录
$goback="<br><br><br><br><center>系统将在3秒后返回....</center><script>setTimeout('location.href="view.php?col=".$col.""',3000)</script>";
set_time_limit(300);//可持续五分钟
//if(!is_dir($uploadto)) mkdir($uploadto,0755);
if($upfile_size>$maxsize)
die("<h1><font color=red>对不起,您要上传的文件太大了,超过了1MB</font></h1>".$goback);
$filename=$upfile_name;
$i=0;
while(file_exists($uploadto.$filename)){
$i++;
$filesp=explode('.',trim($upfile_name));
//echo $filesp[sizeof($filesp)-1];
//echo $filesp[sizeof($filesp)-1]!="zip";
//echo $filesp[sizeof($filesp)-1]!="rar";
if((trim($filesp[sizeof($filesp)-1])!="zip") && (trim($filesp[sizeof($filesp)-1])!="rar")){
die("<h1><font color=red>上传文件的后缀名必须是zip或rar(小写)</font></h1>".$goback);
}
$filename=$filesp[0].$i.".".$filesp[1];
}
if ($i>0)
echo ("<font color=red>对不起,您要上传的文件名已经存在了,<br>系统自动将其更名为".$filename."</font>");
//检查合理性结束
if(!copy($upfile,$uploadto.$filename)) die("<h1><font color=red>系统出现错误03,请将文件重传<br></font></h1>".$goback);
//写文件列表
$fileurl=$uploadto.$filename;//文件url
$flists=$uploadto.$col.".lst";//文件列表位置
for($i=0;$i<100 && !file_exists($flists);$i++);
if($i==99) {
unlink($uploadto.$filename);
die("系统出错00".$goback);
}
copy($flists,$flists.".bak");
if(!$fp=fopen($flists,"r")){
unlink($uploadto.$filename);
die("出错01".$goback);
}
$filerc=explode(">",fread($fp,filesize($flists)));//上传的档案资料
fclose($fp);
unlink($flists);
$firstrec=explode("<",$filerc[0]);
if(!$firstrec[0]) $id=1;
else $id=$firstrec[0]+1;
$oldinfo=implode(">",$filerc);
$newinfo=$id."<".$writer."<".$filename."<0<".$intro."<".$upfile_size."<0>".$oldinfo;
//编号<作者<文件位置<投票计数<简介<文件大小<文件下载次数
if(!$fp=fopen($flists,"w")){
unlink($uploadto.$filename);
copy($flists.".bak",$flists);
die("出错02".$goback);
}
fwrite($fp,trim($newinfo));
fclose($fp);
//写文件列表结束
//文件传送
echo "<h1>传送成功</h1>";
echo "文件在<a href=".$fileurl.">".$cgiroot.$fileurl."</a>.$goback";
//文件传送成功
?>
</center>
</div>
</body>
</html>
这是本文的最后一篇,主要介绍如何使用系统,让我们用个事例来说明:
例如我们要做flash作品上传投票,那我们只需要在../uploadfile/(相对系统php文件所在位置)子目录下建一个flash子目录,并在其中建立下列文件:flash.if(记录显示时出现的标题),flash.ip(投票ip记录),flash.ipd(下载ip记录),flash.lst(下载文件信息记录).然后使用view.php?col=flash就可使用系统了,如果要新增栏目/用户php作品上传,只需在../uploadfile/下另建子目录php,和相应文件,并使用view.php?col=php就可使用了
,上传文件和文件地址的归档
<html>
<head><title>文件上传</title>
<body><div style="width:750"><center>
<?php
//上传的栏目$col,$upfile上传的文件,$writer作者,$intro简介
$writer=substr(htmlspecialchars($writer),0,20);
$intro=substr(htmlspecialchars($intro),0,100);
$maxsize=512000*2;//最大的文件长度
$pathtemp=explode("/",$HTTP_ENV_VARS["PATH_INFO"]);
$pathtemp[sizeof($pathtemp)-1]="";
$cgiroot="http://".$HTTP_HOST.implode("/",$pathtemp);//主机加当前目录
//$cgiroot="http://eccct.51.net/cgi-bin/";
$uploadto="../uploadfile/".$col."/";//上传到的子目录
$goback="<br><br><br><br><center>系统将在3秒后返回....</center><script>setTimeout('location.href="view.php?col=".$col.""',3000)</script>";
set_time_limit(300);//可持续五分钟
//if(!is_dir($uploadto)) mkdir($uploadto,0755);
if($upfile_size>$maxsize)
die("<h1><font color=red>对不起,您要上传的文件太大了,超过了1MB</font></h1>".$goback);
$filename=$upfile_name;
$i=0;
while(file_exists($uploadto.$filename)){
$i++;
$filesp=explode('.',trim($upfile_name));
//echo $filesp[sizeof($filesp)-1];
//echo $filesp[sizeof($filesp)-1]!="zip";
//echo $filesp[sizeof($filesp)-1]!="rar";
if((trim($filesp[sizeof($filesp)-1])!="zip") && (trim($filesp[sizeof($filesp)-1])!="rar")){
die("<h1><font color=red>上传文件的后缀名必须是zip或rar(小写)</font></h1>".$goback);
}
$filename=$filesp[0].$i.".".$filesp[1];
}
if ($i>0)
echo ("<font color=red>对不起,您要上传的文件名已经存在了,<br>系统自动将其更名为".$filename."</font>");
//检查合理性结束
if(!copy($upfile,$uploadto.$filename)) die("<h1><font color=red>系统出现错误03,请将文件重传<br></font></h1>".$goback);
//写文件列表
$fileurl=$uploadto.$filename;//文件url
$flists=$uploadto.$col.".lst";//文件列表位置
for($i=0;$i<100 && !file_exists($flists);$i++);
if($i==99) {
unlink($uploadto.$filename);
die("系统出错00".$goback);
}
copy($flists,$flists.".bak");
if(!$fp=fopen($flists,"r")){
unlink($uploadto.$filename);
die("出错01".$goback);
}
$filerc=explode(">",fread($fp,filesize($flists)));//上传的档案资料
fclose($fp);
unlink($flists);
$firstrec=explode("<",$filerc[0]);
if(!$firstrec[0]) $id=1;
else $id=$firstrec[0]+1;
$oldinfo=implode(">",$filerc);
$newinfo=$id."<".$writer."<".$filename."<0<".$intro."<".$upfile_size."<0>".$oldinfo;
//编号<作者<文件位置<投票计数<简介<文件大小<文件下载次数
if(!$fp=fopen($flists,"w")){
unlink($uploadto.$filename);
copy($flists.".bak",$flists);
die("出错02".$goback);
}
fwrite($fp,trim($newinfo));
fclose($fp);
//写文件列表结束
//文件传送
echo "<h1>传送成功</h1>";
echo "文件在<a href=".$fileurl.">".$cgiroot.$fileurl."</a>.$goback";
//文件传送成功
?>
</center>
</div>
</body>
</html>
这是本文的最后一篇,主要介绍如何使用系统,让我们用个事例来说明:
例如我们要做flash作品上传投票,那我们只需要在../uploadfile/(相对系统php文件所在位置)子目录下建一个flash子目录,并在其中建立下列文件:flash.if(记录显示时出现的标题),flash.ip(投票ip记录),flash.ipd(下载ip记录),flash.lst(下载文件信息记录).然后使用view.php?col=flash就可使用系统了,如果要新增栏目/用户php作品上传,只需在../uploadfile/下另建子目录php,和相应文件,并使用view.php?col=php就可使用了
相关文章推荐
- 不用数据库的多用户文件自由上传投票系统(2)
- 不用数据库的多用户文件自由上传投票系统(3)
- 不用数据库的多用户文件自由上传投票系统(1)
- 不用数据库的多用户文件自由上传投票系统(3)
- 不用数据库的多用户文件自由上传投票系统(1)
- 不用数据库的多用户文件自由上传投票系统(2)
- 不用数据库的多用户文件自由上传投票系统(2)
- 不用数据库的多用户文件自由上传投票系统(1)
- 使用Servlet实现的包括文件上传的用户管理系统
- 投票系统[单/复选,投票数量/项随意][C#/SQL/文件包括数据库代码全部在]
- 当重装数系统/数据库之后,如何恢复数据库的账号 登录名/用户名 孤立用户 缩小ldf日志文件 修改sqlserver2000端口
- 投票系统[单/复选,投票数量/项随意][C#/SQL/文件包括数据库代码全部在]
- 探究ftp的奥妙之系统用户如何上传下载文件、vsftpd如何识别证书并利用客户端来实现远程连接传输
- javascript仿163网盘无刷新文件上传系统
- 利用commons-fileupload组件上传文件至服务器和数据库
- 简便无刷新文件上传系统
- jQuery+php+ajax+PHPExcel实现上传excel文件导入数据库
- 系统和用户的环境变量配置文件
- 基于codeigniter框架写的网站日志系统适配器(支持写入本地文件、数据库、远程服务器)
- asp.net 简便无刷新文件上传系统