网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > PHP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.解决phpMyAdmin2.6以上版本数据乱.
.实现“上一页”和“下一页".
.留言板翻页的实现详解.
.利用 window_onload 实现select默.
.PHP用户指南-cookies部分.
.浅析Wordpress的插件执行流程.
.为什么PHP令人不爽(对于大型系统.
.说说PHP作图(一).
.不需要GD库的情况下实现验证码.
.用php或js获取图片大小,高宽尺寸..
.PHP性能优化的技巧.
.NuSOAP构建基于PHP的SOAP服务.
.PHP Extended CHM 中文手册.
.如何使用PHP编程说明.
.PHP创建(中/英文字)图片.
.NuSOAP与PHPRPC比较.
.截获网站<title></titl.
.用PHP自动把纯文本转换成Web页面.
.轻型数据库SQLite结合PHP的开发.
.如何过滤高亮显示非法字符.

一个简单上传文件出错的解决

发表日期:2005-7-28


以前没怎么注意搞过文件上传,昨天搞了一个简单的却发现问题还挺多。

刚开始的程序代码如下:
uploadimg.php
 
<?php

//判断是上载界面还是实现界面,如果是上载界面,显示下面的HTML页面
if(!$_POST['UploadAction']):

?>

<html>
<head>
<title></title>
</head>
<body><table><center>
<form enctype="multipart/form-data" name="SubmitForm" action="" method="post">
<input type="hidden" name="UploadAction" value="1">
<tr><td><input name="UploadFile" type="file" size="30"></td></tr>
<tr><td><input type="submit" name="submit" value="上传"></td>
        <td><input type="reset" name="reset" value="重置"></td></tr>
</form>
</center></table></body>
</html>

<?php

//如果是实现页面,显示下面的HTML页面,并激活PHP脚本
else:

?>

<html>
<head>
<title></title>
</head>
<body>

<?php


//www.gaoqian.com初始化UploadAction的状态
$UploadAction=0;

$UploadFile=$_POST['UploadFile'];

if(($UploadFile!="none") && ($UploadFile!=""))
{
        $UploadPath=$_SERVER['DOCUMENT_ROOT']."\\";

        if (!is_writeable($UploadPath))
        {
                echo "$UploadPath目录不可写!"; exit;
        }
        else
        {
                echo " $UploadPath 目录可写!";
        }

        $FileName=$UploadFile_name;

        if($UploadFile_size<1024)
        {
                $FileSize=(string)$UploadFile_size."字节";
        }
        elseif($UploadFile_size<(1024*1024))
        {
                $FileSize=number_format((double)($UploadFile_size/1024),1)."KB";
        }
        else
        {
                $FileSize=number_format((double)($UploadFile_size/(1024*1024)),1)."KB";
        }
        if(!file_exists($UploadPath.$FileName))
        {
                if(move_uploaded_file($UploadFile,$UploadPath.$FileName))
                {
                        echo "文件 $UploadFile_name ($FileSize) 上传成功!";
                }
                else
                {
                        echo "文件 $UploadFile_name ($FileSize) 上传失败!";
                }
                unlink($UploadPath.$FileName);
        }
        else
        {
                echo "文件 $UploadFile_name 已经存在!";
        }
}
else
{
        echo "你没有选择任何文件上传,或者上传的文件超出了 $MAX_FILE_SIZE !";
}

?>

<br><a href="uploadimg.php">返回</a>
</body>
</html>

<?php

endif

?>
 


运行发现上传一点效果都没有,连实现页面都进入不了,搜索询问之后才晓得上传文件获得要用$_FILES

于是做了一些变化:


    
$UploadFile=$_FILES['UploadFile']['tmp_name'];
$UploadFile_size=$_FILES['UploadFile']['size'];
$UploadFile_name=$_FILES['UploadFile']['name'];
$FileName=strtolower($UploadFile_name);
 


本来以为这下一定搞定,结果出现错误信息为:


    
Warning: move_uploaded_file(F:\Server\www\): failed to open stream: Permission denied in F:\Server\www\eoool\finish\uploadimg.php on line 76
Warning: move_uploaded_file(): Unable to move 'E:\WINDOWS\TEMP\php34.tmp' to 'F:\\Server\\www' in F:\Server\www\eoool\finish\uploadimg.php on line 76
文件 *****(****字节) 上传失败!
 


而我是在WIN系统上进行调试,应该不存在文件权限问题,自己看了又看,想了又想,却仍然不得其法,在落伍和喜悦都发帖求救,却没有得到正确的答案,仅仅一个简单的文件上传费了我1天多的时间仍然搞不定,让我很是丧气,网上又搜索不到与我类似的错误。
最终没办法,我想到为何用sablog调试的时候上传附件可以成功呢?于是仔细看了下sablog的附件上传的原代码,参照其代码又做了如下变化:


    
function getextension($filename) {
        return substr(strrchr($filename, "."), 1);
}

$extension=getextension($FileName);

if(move_uploaded_file($UploadFile,$UploadPath."temp.".$extension))

//unlink($UploadFile);   
unlink($UploadPath."temp.".$extension);
 


结果马上收到效果,上传成功!
我这里用到unlink($UploadPath."temp.".$extension);是为了马上删除掉上传到空间的文件,节省空间。

上一篇:php作wap开发时遇到的问题 人气:10243
下一篇:PHP实现自动刷数和“灌水”机 人气:10523
浏览全部php的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐