我从网上找了一段上传图片的代码可是总提示错误,找了半天也没找到,希望各位帮我找一下!
错误提示:Warning: move_uploaded_file(./files/CR-dPbzUyKTo5.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in E:\PHP\xampp\htdocs\cr_downloadphp\upload\files\upload.php on line 54Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'E:\PHP\xampp\tmp\php8D.tmp' to './files/CR-dPbzUyKTo5.jpg' in E:\PHP\xampp\htdocs\cr_downloadphp\upload\files\upload.php on line 54
代码如下:
<?php/***************************************** Title :文件上传详解
Author:leehui1983(辉老大)
Finish Date :2006-12-28 *****************************************/ $uploaddir = "./files/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
$patch="http://127.0.0.1/cr_downloadphp/upload/files/";//程序所在路径
//获取文件后缀名函数
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
//生成随机文件名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
} $a=strtolower(fileext($_FILES['file']['name']));
//判断文件类型
if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}
//生成目标文件的文件名
else{
$filename=explode(".",$_FILES['file']['name']);
do
{
$filename[0]=random(10); //设置随机数长度
$name=implode(".",$filename);
//$name1=$name.".Mcncc";
$uploadfile=$uploaddir.$name;
} while(file_exists($uploadfile)); if(move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){
if (is_uploaded_file($_FILES["file"]["tmp_name"])){
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
echo "<br><center><a href='javascrīpt:history.go(-1)'>继续上传</a></center>";
}
}
}?>
错误提示:Warning: move_uploaded_file(./files/CR-dPbzUyKTo5.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in E:\PHP\xampp\htdocs\cr_downloadphp\upload\files\upload.php on line 54Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'E:\PHP\xampp\tmp\php8D.tmp' to './files/CR-dPbzUyKTo5.jpg' in E:\PHP\xampp\htdocs\cr_downloadphp\upload\files\upload.php on line 54
代码如下:
<?php/***************************************** Title :文件上传详解
Author:leehui1983(辉老大)
Finish Date :2006-12-28 *****************************************/ $uploaddir = "./files/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
$patch="http://127.0.0.1/cr_downloadphp/upload/files/";//程序所在路径
//获取文件后缀名函数
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
//生成随机文件名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
} $a=strtolower(fileext($_FILES['file']['name']));
//判断文件类型
if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}
//生成目标文件的文件名
else{
$filename=explode(".",$_FILES['file']['name']);
do
{
$filename[0]=random(10); //设置随机数长度
$name=implode(".",$filename);
//$name1=$name.".Mcncc";
$uploadfile=$uploaddir.$name;
} while(file_exists($uploadfile)); if(move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){
if (is_uploaded_file($_FILES["file"]["tmp_name"])){
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
echo "<br><center><a href='javascrīpt:history.go(-1)'>继续上传</a></center>";
}
}
}?>
创建文件夹
files
is_uploaded_file应在move_uploaded_file之前进行,否则is_uploaded_file总为false两行互换一下
修改为:if (is_uploaded_file($_FILES["file"]["tmp_name"])){
if(move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){
<a href='javascrīpt:history.go(-1)'>继续上传</a>
换为
<a href='javascript:history.go(-1)'>继续上传</a>
在移動之前先判斷一下臨時檔案是否存在,
個人覺得問題應該是上傳失敗,沒有生成臨時檔案造成的
檢查一下表單的enctype 屬性是否為 multipart/form-data
只有設置了這個屬性才能上載檔案