<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
<form action="b.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <p>
    <input name="upf" type="file" id="upf" />
  </p>
  <p>
    <input type="submit" name="Submit" value="提交" />
</p>
</form>
</body>
</html>b.php<?php 
$upfile=$_FILES['upf'];
 if ($upfile['name']<>"") {
if(file_exists($upfile['name'])){ //这里应该怎么先判断文件路径是否有效?
  
     if (copy($upfile['tmp_name'],"upfile/".$upfile['name'])) {
    echo "File is valid, and was successfully uploaded.\n";
     } else {
    echo "Possible file upload attack!\n";
     }
  }
  else echo "no file ";
}
?>
怎么先判断文件路径是否有效??
用file_exists或$upfile['size']<>0都没反应。
谢谢

解决方案 »

  1.   

    提交后的文件已经在服务器的临时目录了,你用 file_exists 只判断“name” 显然得不到想要的结果,因为没有路径。如果想检测是否有文件上传,检测文件尺寸就可以了:if($upfile['size'] > 0)
    {
        //move the file to some place what u want.
    }
      

  2.   

    <html><head>
    <title>上载文件表单</title></head> 
    <body> 
    <form enctype="multipart/form-data" action="" method="post"> 
    请选择文件: <br><input name="upload_file" type="file"><br><input type="submit" value="上传文件"> 
    </form> 
    </body>
    </html> <?
    $upload_file=$_FILES['upload_file']['tmp_name'];
    $upload_file_name=$_FILES['upload_file']['name'];if($upload_file){
    $file_size_max = 1000*1000;// 1M限制文件上传最大容量(bytes)
    $store_dir = "d:/";// 上传文件的储存位置
    $accept_overwrite = 1;//是否允许覆盖相同文件
    // 检查文件大小
    if ($upload_file_size > $file_size_max) {
    echo "对不起,你的文件容量大于规定";
    exit;
    }// 检查读写文件
    if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
    Echo   "存在相同文件名的文件";
    exit;
    }//复制文件到指定目录
    if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
    echo "复制文件失败";
    exit;
    }}Echo   "<p>你上传了文件:";
    echo  $_FILES['upload_file']['name'];
    echo "<br>";
    //客户端机器文件的原名称。 Echo   "文件的 MIME 类型为:";
    echo $_FILES['upload_file']['type'];
    //文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。 
    echo "<br>";Echo   "上传文件大小:";
    echo $_FILES['upload_file']['size'];
    //已上传文件的大小,单位为字节。 
    echo "<br>";Echo   "文件上传后被临时储存为:";
    echo $_FILES['upload_file']['tmp_name'];
    //文件被上传后在服务端储存的临时文件名。 
    echo "<br>";
    $Erroe=$_FILES['upload_file']['error'];
    switch($Erroe){
            case 0:
                Echo   "上传成功"; break;
            case 1:
                Echo   "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."; break;
            case 2:
                Echo   "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";    break;
            case 3:
                Echo   "文件只有部分被上传";break;
            case 4:
                Echo   "没有文件被上传";break;
    }
    ?>
      

  3.   

    http://blog.csdn.net/net_lover/archive/2006/07/19/941312.aspx
      

  4.   

    to liufabin()  
    在php5中if ($upload_file_size > $file_size_max) 应该用$_FILES['upload_file']['size']吧to Fufay(☆梅笑寒☆ MSN: [email protected]
    当在  <input  type="file">中随便填上几个字符没有盘符提交时,
    if($upfile['size'] > 0)就不能判断了。