楼 主
index »
PHP原创源码发布区 » [原创]PHP文件上传祖传秘方吐血公布
发表:2004-09-17 05:47:37 阅读 5526 次 回复 28 次 得分33 |
字号
10px
12px
14px
16px
18px
20px
24px
字色
▅▅▅▅▅
▅▅▅▅▅
▅▅▅▅▅
▅▅▅▅▅
▅▅▅▅▅
▅▅▅▅▅
[原创]PHP文件上传祖传秘方吐血公布
最近,咨询PHP文件上传技术的网友不断增多,因此,站长再三考虑,讲看家本领倾囊相授! 已飨读者!!
***********************************************************
*[声明]本站所有原创文章,均为站长或用户独立创作,版权归本站所有.*
* 本站为非盈利兴网站,主张源代码开放和免费.本站所有原创文 *
* 章欢迎任何形式的转载,但是,为尊重作者本人的著作权,书面 *
* 转载请联系站长,网络转载请注明出处,谢谢合作. *
***********************************************************
[注意]本文中提供的代码,为站长本人撰写.本代码只注重功能实现和技术实现,仅供学习参考.没有考虑网络安全等其他因素.本站保证本代码不包含恶意内容.但是不保证本代码在不同环境中运行不会对系统产生负面影响.对于使用本代码带来的一切问题,本站不承担任何责任.本代码允许根据个人需要做任意改动,但是,如果完整使用本代码,请保留代码中的版权声明.谢谢合作.
-----------------------------------------------------------
本例子是站长曾经写过的一个PHP文件远程管理系统的一部分代码.是其中的文件上传部分.可以很好的实现上传任意格式的文件到服务器指定目录的功能.
本例子由两个文件组成: 1.html 2.php
1.html是一个纯html文件,主要用来产生一个form,也就是文件上传的表单.2.php完成文件上传功能,包括判断文件是否已经存在,如果已经存在,则提示是否覆盖,等等.代码比较简单,并且站长书写了简单注释,估计有一定PHP基础的朋友一看就懂.
--------------------------------
1.html代码如下:
-----------------
<table cellpadding="4" style="border-collapse: collapse" bordercolor="#9999FF" width="446" height="144" cellspacing="1" border="0">
<tr><td width="414" height="373">
<div align="center">
<center>//下面表单开始
<form enctype="multipart/form-data" action="2.php" method="post">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#808000" width="105%" height="95">
<tr><td width="100%" height="46" colspan="2" bordercolor="#C0C0C0" bgcolor=#B7C8F9>
<p align="center"> <font face="黑体" size="5">文件上传</font></td></tr><tr>
<td width="100%" height="27" colspan="2" bgcolor="#FFF5E8" bordercolor="#C0C0C0">
<p align="center"> </td>
</tr>
<tr>
<td width="33%" height="27" align="left" bordercolor="#DFDFDB" bgcolor="#F4FFF4">
<font size="2" color="#008080"> 选择文件:</font></td>
<td width="67%" height="27" bordercolor="#DFDFDB">
<input name="pic_name" type="file"><font size=2 color=#24753F><br>
</td>
</tr>
<tr>
<td width="33%" height="27" align="left" bordercolor="#DFDFDB" bgcolor="#F4FFF4">
<font size="2" color="#008080"> 上传到:</font></td>
<td width="67%" height="27" bordercolor="#DFDFDB">
<input type="text" value="c:\" name="target_dir"></td>
</tr>
<tr>
<td width="100%" height="32" colspan="2" bgcolor=#B7C8F9>
<p align="center"><input type="submit" value="上传" name="B1">
<input type="reset" value="重写" name="b2"></td>
</form>
</tr>
</table>
---------------------------------------------------
上面的代码虽然多,但是十分简单,一看就懂,直接复制下去使用也可以
2.php代码如下:(其中我使用了英文注释)
------------------------
<?php
//This program is used to file uploads.
//Writen by NQP,webmaster@17php.com www.17php.com
//Copyright 2004 all rights reserved.
$target_dir=$_POST["target_dir"]; //the target dir of the file.
$pic_name=""; //The file name.
if(empty($_FILES['pic_name']['name'])){
echo "<script language=javascript>";
echo "alert('你没有选择文件路径,请重试!');";
echo "location.href='1.html';
echo "</script>";
exit;
}else{
$savedir=$target_dir.$_FILES['pic_name']['name'];
if(file_exists($savedir)){
?>
<script language=javascript>
if(confirm("文件<?php echo $savedir;?>已经存在,要覆盖吗?")){
<?php
if(move_uploaded_file($_FILES['pic_name']['tmp_name'], $savedir)){
$pic_name=basename($savedir);
echo "alert('文件".$pic_name."已经成功上传到".$savedir."!');";
echo "location.href='1.html
}else{
echo "alert('错误,无法将文件写入服务器!\n本次发布失败!');";
echo "location.href='1.html';";
}
?>
}else{
location.href="1.html";
}
</script>
<?php
}else{
if(move_uploaded_file($_FILES['pic_name']['tmp_name'], $savedir)){
$pic_name=basename($savedir);
echo "<script language=javascript>";
echo "alert('文件".$pic_name."已经成功上传到".$savedir."!');";
echo "location.href='1.html';";
echo "</script>";
}else{
echo "<script language=javascript>";
echo "alert('错误,无法将文件写入服务器!\n本次发布失败!');";
echo "location.href='1.html';";
echo "</script>";
exit;
}
}
}
------------------------------------------------------------
以上这个例子,是我费了很大的力气研究的.已经相当好用.只要你的php配置没有问题,那么我敢保证在php4/windows平台上,这个代码运行没有任何问题.关于在linux平台上,我没有测试过,不知道是否可以顺利运行.
希望这段代码能够对大家了解PHP的文件系统操作有所帮助.
如果觉得可以,请回复,如果又看不懂得地方,可以发问.
1#楼
回复人:海天旭日
注册时间:2004-04-06
主题/回复:69/145
积分:1508
等级:★★★★(八级)
称号:论坛才子
1#楼 发表于2004-09-17 19:23:44
评分:3
2#楼
回复人:slopesun
注册时间:2004-09-07
主题/回复:58/67
积分:753
等级:★★★(六级)
称号:声名鹊起
2#楼 发表于2004-09-17 19:32:31
评分:1
站长大人太无私了!!!
就冲这一点.大家庆幸吧,庆幸找了个好地方.
3#楼
回复人:Miyahoo
注册时间:2004-04-04
主题/回复:39/255
积分:1210
等级:★★★☆(七级)
称号:论坛贤士
3#楼 发表于2004-09-24 19:46:06
评分:1
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in d:\inetpub\wwwroot\2.php on line 26
4#楼
回复人:一起PHP
注册时间:2004-02-27
主题/回复:247/1521
积分:4649
等级:★★★★★☆(十一级)
称号:论坛圣人
4#楼 发表于2004-09-28 23:56:55
评分:×
纠正声明............................
由于输入错误,本程序有几处语法格式错误,特此纠正:
第十一行:echo "location.href='1.html';
应该为: echo "location.href='1.html';";
第二十四行:echo "location.href='1.html
应该为:echo "location.href='1.html';";
第三十七行:echo "location.href='1.html
应该为: echo "location.href='1.html';";
主要有这几处错误。如果大家还有发现新的错误,也肯定是类似于这个引号错误。大家可以自行纠正。
5#楼
回复人:xiaotian
注册时间:2004-10-01
主题/回复:1/4
积分:409
等级:★★☆(五级)
称号:略有小成
5#楼 发表于2004-10-01 07:42:01
评分:1
站长这么大方,我也把我的一个上传相片的程序粘这里了
//php处理部分
$upload='../upload_pic';
$pic_max=5000000;
if ($pic_upload_type=="image/gif"||$pic_upload_type=="image/pjpeg"){
if (file_exists("$upload/$pic_upload_name")){
echo "<br><br><center>上传图片已经存在,请改名上传</center>";
exit;
}elseif ($pic_upload_size>=$pic_max){
echo "<br><br><center>图片太大,请优化一下</center>";
exit;}else{
copy($pic_upload,"$upload/".$pic_upload_name);
echo "图片上传成功!请将下面一段红色代码复制到文章中!<br>";
echo "<br><font color=\"#FF0000\"><center><img src=upload_pic/$uploadpic_dir/$pic_upload_name></center></font>";
echo "你要上传的图片为<br>";
echo "<img src=../upload_pic/$uploadpic_dir/$pic_upload_name>";
}
}else{
echo "<br><br><center>图片格式不对,请转化为jpg或gif式格式!</center>";
}
?>
//html页面部分
<form name="form2" method="post" action="uppic.php" target="_blank" enctype="multipart/form-data">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10"> </td>
<td><input type="file" name="pic_upload">
<input type="submit" name="tjpic" value="提交"></td>
</tr>
</table>
</form>
//完毕
大家可以看看这个好使不好使
6#楼
回复人:小猪
注册时间:2005-02-04
主题/回复:1/11
积分:416
等级:★★☆(五级)
称号:略有小成
6#楼 发表于2005-02-11 02:40:55
评分:5
7#楼
回复人:vstart
注册时间:2005-04-22
主题/回复:6/20
积分:450
等级:★★☆(五级)
称号:略有小成
7#楼 发表于2005-04-22 03:36:23
评分:5
为什么我总是这么幸运
幸运来到这个站
幸运这个站有个这么好的站长~~
致敬~~
8#楼
回复人:less
注册时间:2005-04-08
主题/回复:12/20
积分:480
等级:★★☆(五级)
称号:略有小成
8#楼 发表于2005-04-26 22:53:33
评分:1
9#楼
回复人:夜的沉默
注册时间:2005-05-03
主题/回复:1/2
积分:407
等级:★★☆(五级)
称号:略有小成
用户联系方式已设置为保密
9#楼 发表于2005-05-03 08:14:41
评分:3
10#楼
回复人:bluerain
注册时间:2005-05-05
主题/回复:4/6
积分:426
等级:★★☆(五级)
称号:略有小成
10#楼 发表于2005-05-05 07:38:02
评分:1
我觉得这段代码有点问题,但我没有测试。
我说一下我的看法。
if(file_exists($savedir)){
?>
<script language=javascript>
if(confirm("文件<?php echo $savedir;?>已经存在,要覆盖吗?")){
<?php /* bluerain注:问题在这里,这里输出客户端脚本,但是后面的php代码会继续执行,并不会等待用户作出选择。无论选择确定还是取消,都会覆盖文件*/
if(move_uploaded_file($_FILES['pic_name']['tmp_name'], $savedir)){
$pic_name=basename($savedir);
echo "alert('文件".$pic_name."已经成功上传到".$savedir."!');";
echo "location.href='1.html
}else{
echo "alert('错误,无法将文件写入服务器!\n本次发布失败!');";
echo "location.href='1.html';";
}
?>
}else{
location.href="1.html";
}
</script>
<?php
11#楼
回复人:一起PHP
注册时间:2004-02-27
主题/回复:247/1521
积分:4649
等级:★★★★★☆(十一级)
称号:论坛圣人
11#楼 发表于2005-05-10 20:05:05
评分:×
bluerain所言极是!
我用这个代码时间不短了,还没有察觉这个问题。
以前测试的时候感觉没有问题,可能是浏览器缓存问题。
看来要想实现检查文件是否存在的功能,还得想其他方法。
12#楼
回复人:kookai
注册时间:2005-05-09
主题/回复:2/5
积分:415
等级:★★☆(五级)
称号:略有小成
12#楼 发表于2005-05-14 21:01:25
评分:1
Parse error: parse error, unexpected '}' in d:\usr\www\html\wy\2.php on line 28
我知道这问题没营养,,可是眼睛都看花了,,还是没…… :(
13#楼
回复人:tvrvjxk
注册时间:2004-10-11
主题/回复:6/11
积分:449
等级:★★☆(五级)
称号:略有小成
13#楼 发表于2005-05-17 03:39:48
评分:1
Parse error: parse error, unexpected '}' in E:\php\2.php on line 28
这个问题怎么解决
14#楼
回复人:kookai
注册时间:2005-05-09
主题/回复:2/5
积分:415
等级:★★☆(五级)
称号:略有小成
14#楼 发表于2005-05-18 02:52:00
评分:♂
15#楼
回复人:一起PHP
注册时间:2004-02-27
主题/回复:247/1521
积分:4649
等级:★★★★★☆(十一级)
称号:论坛圣人
15#楼 发表于2005-05-21 02:17:55
评分:×
勘误:
上面贴的程序,由于疏忽,造成了一点语法错误,给大家造成了不便。
现在将完整版,几经测试,绝对无错误,绝对直接可运行代码贴到这里!
当然,下面的程序虽然可以检查同名文件是否已经存在,但是不管如何都回覆盖掉原来的文件,这个问题还没有很好解决。但是最好的办法是上传的时候让系统自动生成一个文件名,用rand()函数,这样可以避免覆盖。
----------------------------------------------
1.html不变,只贴 2.php
--------------------------------------------
<?php
//this program is used to file uploads.
//Writen by NQP,webmaster@17php.com http://www.17php.com
//欢迎使用和指点,请保留版权信息,谢谢。
$target_dir=$_POST["target_dir"]."\\"; //the target dir of the file.
$pic_name=""; //The file name.
if(empty($_FILES['pic_name']['name'])){
echo "<script language=javascript>";
echo "alert('你没有选择文件路径,请重试!');";
echo "location.href='upfile.php';";
//上面这个upfile.php是上传成功之后转到的页面
//可以修改成自己需要的页面。
echo "</script>";
exit;
}else{
$savedir=$target_dir.$_FILES['pic_name']['name'];
if(file_exists($savedir)){
?>
<script language=javascript>
if(confirm("文件<?php echo $savedir;?>已经存在,要覆盖吗?")){
<?php
if(move_uploaded_file($_FILES['pic_name']['tmp_name'], $savedir)){
$pic_name=basename($savedir);
echo "alert('文件".$pic_name."已经成功上传到".$savedir."!');";
echo "location.href='upfile.php';";
//上面这个upfile.php是上传成功之后转到的页面
//可以修改成自己需要的页面。
}else{
echo "alert('错误,无法将文件写入服务器!\n本次发布失败!');";
echo "location.href='upfile.php';";
}
?>
}else{
location.href="upfile.php";
}
</script>
<?php
}else{
if(move_uploaded_file($_FILES['pic_name']['tmp_name'], $savedir)){
$pic_name=basename($savedir);
echo "<script language=javascript>";
echo "alert('文件".$pic_name."已经成功上传到".$savedir."!');";
echo "location.href='upfile.php';";
echo "</script>";
}else{
echo "<script language=javascript>";
echo "alert('错误,无法将文件写入服务器!\n本次发布失败!');";
echo "location.href='upfile.php';";
echo "</script>";
exit;
}
}
}
?>
-----------------------------------------------------