我用rename对文件进行重名名当我在rename中的参数指定具体来讲具体文件是能重命名,为什么当我指定变量不行
比如 rename("D:\xx\xx.JPEG","D:\xx\ss.JPEG"); 能够重命名成功
而 $a="D:\xx\xx.JPEG" $b="D:\xx\ss.JPEG" rename($a,$b); 当我指定变量时为什么不行?
比如 rename("D:\xx\xx.JPEG","D:\xx\ss.JPEG"); 能够重命名成功
而 $a="D:\xx\xx.JPEG" $b="D:\xx\ss.JPEG" rename($a,$b); 当我指定变量时为什么不行?
//do it like this$a="D:/www/test/demo.php";
$b="D:/www/test/demo2.php";
rename("$a","$b");
//测试了可以的。。使用正斜线吧
$a="D:\xx\\xx.JPEG" ;
$b="D:\xx\\ss.JPEG" ;
rename($a,$b);
Warning: rename(D:/PHP/pic133169357800.jpg ,D:/PHP/picA133169357800.jpg) [function.rename]: 文件名、目录名或卷标语法不正确。
比如 $a、$b 分别会源文件和目标文件文件名,则
if(file_exists($a) && !file_exists($b)) {
rename($a, $b);
}else {
echo '不能更名';
}
$id=$_POST['upId'];
$se_query="select name from images where id=$id";
$result=@pg_query($pg,$se_query); $arr = @pg_fetch_array($result,0, PGSQL_ASSOC);
//var_dump($arr)."<br>";
$name=$_POST['upName']; //得到页面输入的文件名
$address=$_POST['upAddress']; //得到页面输入的地址
$aa=$arr["name"];
$v="D:/PHP/".$aa;
echo $v."<br>";
$patch="D:/PHP/".$name;
echo $patch."<br>";
$up_query="update images set name='$name' where id=$id" ;
$result=@pg_query($pg,$up_query);
if(@pg_num_rows($result)==1)
{
echo ("<script type='text/javascript'>alert('更新失败!');</script>");
}
else
{
rename("$v", "$patch");
echo ("<script type='text/javascript'>alert('更新成功!');</script>");
}
真的不知道错在哪里了。 请给位大哥教教小弟。
$result=@pg_query($pg,$up_query);
if(@pg_num_rows($result)==1) 这个要用 pg_affected_rows,因为你是在 update。另外分支也返了对于 rename("$v", "$patch");
请贴出 $v, $patch 的值
这个是我报的错。
if(file_exists($v) && !file_exists($patch) ) {
$up_query="update images set name='$name' where id=$id" ;
$result=@pg_query($pg,$up_query);
rename($v, $patch);
echo ("<script type='text/javascript'>alert('更新成功!');</script>");
}
else
{
echo ("<script type='text/javascript'>alert('更新失败!');</script>");
}Warning: rename(D:/PHP/pic1331715077.jpg ,D:/PHP/picQQ1331715077.jpg) [function.rename]: 文件名、目录名或卷标语法不正确。大哥。同样会报错的、主要问题是在那个用rename方法重命名的时候报错。
echo $fn . (file_exists($fn) ? '' : '不') . '存在';$fn = 'D:/PHP/picQQ1331715077.jpg'
echo $fn . (file_exists($fn) ? '' : '不') . '存在';
是不是D:/PHP/pic111331693387.jpg 后面多个空格的原因啊,去掉试试?
$aa="pic111331693387AAA.jpg";
$name="123.jpg";
$v="D:/PHP/".$aa;
$patch="D:/PHP/".$name;rename($v, $patch);//rename("$v", "$patch"); 也是ok的
?>
我这样是ok的,所以我认为是楼主文件在那个盘不存在导致的,仔细看看呗
或者你直接把rename("$v", "$patch"); 写到 $up_query="update images set name='$name' where id=$id" ; 之前,试试看,是不是根本就没运行到那一步啊
$id=$_POST['upId'];
$se_query="select name from images where id=$id";
$result=@pg_query($pg,$se_query);
$arr = @pg_fetch_array($result,0, PGSQL_ASSOC);
$name=$_POST['upName']; //得到页面输入的文件名
$address=$_POST['upAddress']; //得到页面输入的地址
$aa=$arr["name"]; //将数据库存储的图片名赋值给$aa
$v="D:/PHP/".$aa; //拼接图片地址
$patch="D:/PHP/".$name;
if(file_exists($v) && !file_exists($patch) ) {
rename($v, $patch);
$up_query="update images set name='$name',address='$patch' where id=$id" ;
$result=@pg_query($pg,$up_query);
echo ("<script type='text/javascript'>alert('更新成功!');</script>");
}
else
{
echo ("<script type='text/javascript'>alert('更新失败!');</script>");
}
这是我现在的代码!!貌似rename在update前后没关系的