2009-06-25 119 views
2

我是php页面,一切正常,直到今天早上。现在该页面没有上传任何选定的文件。所有这一切我不断收到如下错误信息:尝试上传PHP文件时出错

警告:move_uploaded_file(上传/ BrainStream_2009_06_25_23041.zip)function.move上传文件]:未能打开流:C中没有这样的文件或目录: \ xampp \ htdocs \ vectorization \ admin \ jobs_edit.php on line 146

Warning:move_uploaded_file()[function.move-uploaded-file]:无法移动'C:\ Documents and Settings \ Admin \ Local Settings \ Temp \ php1B2.tmp'到第146行的C:\ xampp \ htdocs \ vectorization \ admin \ jobs_edit.php中'upload/BrainStream_2009_06_25_23041.zip' 文件无法上传。请选择一个有效的文件。 文件名:BrainStream.zip

我已经写了下面的代码:

$uplfile = $_FILES['uploadfile']['name']; 
$upltmp = $_FILES["uploadfile"]["tmp_name"]; 
if(!empty($uplfile)) 
{  
    $ext = explode(".", $uplfile); 

    $upload_date = date("Y_m_d"); //use this variable to change file name to avoid conflict with same name files 
    $upload_dir = "upload/"; 

    $file_name=$ext[0]."_".$upload_date."_".rand(0, getrandmax()).".".$ext[1]; 

    (move_uploaded_file($upltmp,$upload_dir.$file_name)) 
} 

我有XAMPP堆叠安装我的电脑,其运行的WinXP上,有3 GB RAM和充足的硬盘空间。

无论我选择哪个尺寸的文件,它总会给出错误。

这段代码有什么错?

+0

只是一个快速提示:如果rand()在没有任何参数的情况下被调用,它将自动按照您使用它的方式运行。 – merkuro 2009-06-25 12:05:27

+0

我看到一个安全漏洞:如果有人上传一个名为“filename.php.jpg”的文件和一些恶意的PHP代码在里面?而不是$ ext [1]使用$ ext [count($ ext)-1]。 – Keeper 2009-06-25 12:08:57

回答

2

有趣的语法,在最后一行。该错误表明问题出现在该行中,并且源文件或目标目录缺失。由于第一个是自动生成的,因此确保C:\xampp\htdocs\vectorization\admin\upload存在并且是可写的。

0

看起来像你的问题可能是你的上传目录使用了正斜杠,但是在Windows上这将是一个反斜杠,你还需要确保上传目录是相对于脚本的。如果不提供完整的路径。

一个很好的提示,以防止斜线的问题是使用DIRECTORY_SEPARATOR不断

0

两件事情之一 - 要么

  1. 没有上传目录
  2. 没有文件php1B2.tmp
0

这似乎是显而易见的,但一定要仔细检查你的php .ini

 
file_uploads = On 
upload_tmp_dir = "C:\xampp\tmp" 
upload_max_filesize = 64M 
0

你可以做些什么是快速检查以确保文件已被上传s成功地例如

switch ($_FILES["cv"]["error"]) 
{ 
    case UPLOAD_ERR_FORM_SIZE: 
     // handle error 
    case UPLOAD_ERR_INI_SIZE: 
     // handle error 
    case UPLOAD_ERR_PARTIAL: 
     // handle error 
    case UPLOAD_ERR_NO_FILE: 
     // handle error 
    case UPLOAD_ERR_CANT_WRITE: 
     // handle error 
} 

它是一种更好的方式来处理上传文件时可能遇到的错误。

1

@phihag,

感谢您的提示。在研究源代码时,一位新开发人员错误地在$ upload_dir变量赋值中删除(../)。

$upload_dir = "upload/"; //this is wrong 

其实它被设置为

$upload_dir = "../upload/"; //this works but accidentally edited by another developer 

我什么拉默。我无法发现问题。

不管怎么说感谢一旦人们对你的帮助来解决我的问题。