Warning: move_uploaded_file(upload/$1(4A$LZTNJM5I})9AN)ZV2.gif): failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\up_load\up_load.php on line 26 Warning: move_uploaded_file(): Unable to move 'C:\Users\everlover\Documents\php上传\phpA309.tmp' to 'upload/$1(4A$LZTNJM5I})9AN)ZV2.gif' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\up_load\up_load.php on line 26 Stored in: upload/$1(4A$LZTNJM5I})9AN)ZV2.gif
这个问题一直不知道咋解决....

解决方案 »

  1.   

    你的代码?
    'upload/$1(4A$LZTNJM5I})9AN)ZV2.gif' 显然是错误的
      

  2.   

     if (file_exists("upload/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "upload/" . $_FILES["file"]["name"]);
          echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
          }
        }
      }
    else
      {
      echo "Invalid file";
      }
      

  3.   

    你能过滤下$_FILES["file"]["name"]这个里面的非法内容(非目录和文件命名规则允许的字符)吗
      

  4.   

    <?php
    // 仅仅是简单说明,不代表这个适合生产使用
    $_FILES["file"]["name"] = '$1(4A$LZTNJM5I})9AN)ZV2.gif';// 为了名字的合法性,我们仅允许常规的字符出现在文件名中
    function filter($filename) {
    // 不能跳目录
    $filename = str_replace('..', '',  $filename);
    // 非合适的文件名的字符替换为空(未考虑中文编码问题)
    $filename = preg_replace('/[^a-z0-9.-_]/i', '', $filename); return $filename;
    }
    // 过滤以后才用文件名
    $_FILES["file"]["name"] = filter($_FILES["file"]["name"]);// 最后建议上传的文件名,最好都是自己产生的简单的合法的文件名,这样才能最大化的保证安全