2012-11-12 59 views
0
<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
    session_start(); 
    $targ_w = $targ_h = 150; 
    $jpeg_quality = 90; 
    $ext=$_GET['ext']; 
    $src = $_GET['p']; 

    $img_r = imagecreatefromjpeg($src); 
    $dst_r = imagecreatetruecolor($targ_w, $targ_h); 

    imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'], 
    $targ_w,$targ_h,$_POST['w'],$_POST['h']); 

    unlink($src); 
    imagejpeg($dst_r,$src,$jpeg_quality); 
    rename($src,"img/temp_images/".$_SESSION['userid'].".".$ext); 

    $result=move_uploaded_file(
         "/img/temp_images/".$_SESSION['userid'].".$ext", 

         "/img/".$_SESSION['userid'].".$ext"); 
    if($result) 
    echo "Success"; 
    else 
    echo "<br>Fail"; 


?> 
  1. 安全模式是关闭
  2. 未显示错误,尽管把下面的代码移动上传的文件的问题

    的ini_set的( '的display_errors',1); error_reporting(E_ALL);

  3. 该系统是运行于localhost

  4. 一切工作除了move_uploaded_file()以功能
  5. 的代码从一个iframe调用。
  6. 我也试过目录(FILE)和许多替代

请提出一个解决方案或原因的问题。我需要使用第一行3来捕捉错误/警告吗?我在XAMPP 2.5.8版本上运行。我假设,因为我能够创建文件,我有权将文件移动到文件夹。我想在本地主机上没有权限的麻烦?

+1

我怀疑路径'/ IMG/...'是正确的。你的硬盘根目录下有一个'img' **文件夹? – deceze

+0

'“/ img/temp_images /”.$_ SESSION ['userid']。“。$ ext”,' - 这是什么?你为什么使用它?你为什么认为你的文件在那里?你应该有这样的东西:'move_uploaded_file($ _ FILES [“picture”] [“tmp_name”],“/ img /".$_ SESSION ['userid']。”。$ ext“(;' –

+0

// unlink-删除文件 问题是你在move_uploaded_file之前取消了链接,导致unlink在上传之前删除你的文件。你应该在move_uploaded_file之后取消链接。 –

回答

0

您正在使用GD库创建新图像。取而代之的move_uploaded_file()尝试使用copy其中从一个位置移动到另一个文件位置

http://php.net/manual/en/function.copy.php

代码示例,

if (copy($old_file, $new_file)) { 
    unlink($old_file); 
} 
+0

嘿复制功能正如我想要的那样工作:-)非常感谢:-) – harsh8888

+0

@ user1435686欢迎!如果我的答案有帮助,那么将其设置为正确答案并投票给我。 –