我是php页面一切正常,直到今天早上。现在页面没有上传任何选定的文件。我一直得到的是以下错误消息:
警告:move_uploaded_file(上传/ BrainStream_2009_06_25_23041.zip)[function.move上传文件]:未能打开流:在C无这样的文件或目录:\ XAMPP \ htdocs中\矢量\管理员\上线jobs_edit.php 146
警告:move_uploaded_file()以[function.move上传文件]:无法移动 'C:\ Documents和Settings \管理员\本地设置的\ Temp \ php1B2.tmp' 到C '上传/ BrainStream_2009_06_25_23041.zip' :第146行:\ xampp \ htdocs \ vectorization \ admin \ jobs_edit.php 文件无法上传。请选择一个有效的文件。 文件名: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))
}
我的PC上安装了XAMPP堆栈,运行WinXP,有3 GB RAM和足够的硬盘空间。
无论我选择哪种尺寸的文件,它总是会出错。
此代码中有什么问题?
答案 0 :(得分:2)
最后一行有趣的语法。该错误表明问题出在该行中,并且缺少源文件或目标目录。由于第一个是自动生成的,因此请确保C:\xampp\htdocs\vectorization\admin\upload
存在且可写。
答案 1 :(得分:1)
@phihag,
感谢您的提示。研究源代码的新开发人员之一错误地在$ upload_dir变量赋值中删除了(../)。
$upload_dir = "upload/"; //this is wrong
实际上它被设置为
$upload_dir = "../upload/"; //this works but accidentally edited by another developer
我真是个傻瓜。我无法发现问题。
无论如何,谢谢你帮助解决我的问题。
答案 2 :(得分:0)
看起来你的问题可能是你正在使用正斜杠为你的上传目录,但在Windows上这将是一个反斜杠,你还需要确保上传目录是相对于脚本。如果没有提供完整的路径。
防止斜杠问题的好建议是使用DIRECTORY_SEPARATOR常量
答案 3 :(得分:0)
两件事之一 -
答案 4 :(得分:0)
这似乎很明显,但一定要仔细检查你的php.ini
file_uploads = On upload_tmp_dir = "C:\xampp\tmp" upload_max_filesize = 64M
答案 5 :(得分:0)
对您来说可能有用的是快速检查以确保文件已成功上传,例如
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
}
它是处理上传文件时可能遇到的错误的更好方法。