【问题标题】:move_uploaded_file not replacing the old image [duplicate]move_uploaded_file 不替换旧图像[重复]
【发布时间】:2014-10-28 04:11:22
【问题描述】:

我有一个问题。我有一个表格来更改用户个人资料图像。如果用户没有以前的图像,则 php 工作正常,图像已上传,如果文件存在,则 move_uploaded_file 不会替换图像,它可以在我的本地主机上工作,但不能在我的在线服务器上工作。这是我的代码

if ($_POST['parse_var'] == "pic"){

// If a file is posted with the form
if ($_FILES['fileField']['tmp_name'] != "") { 
        $maxfilesize = 4109212; 

        if($_FILES['fileField']['size'] > $maxfilesize ) { 
                    $error_msg = '<font color="#FF0000">ERROR: Your image was too large, please try again.</font>';
                    unlink($_FILES['fileField']['tmp_name']); 

        } else if (!preg_match("/\.(gif|jpg|png|jpeg)$/i", $_FILES['fileField']['name'] ) ) {
                    $error_msg = '<font color="#FF0000">ERROR: Your image was not one of the accepted formats, please try again.</font>';
                    unlink($_FILES['fileField']['tmp_name']); 
        } else { 
                    $newname = "profile.jpg";
                    $place_file = move_uploaded_file( $_FILES['fileField']['tmp_name'], "users/$id/".$newname);
        }
    } 
}

任何想法为什么?它在用户第一次更改它时工作,它可能是一个 PHP .ini 问题? 文件第一次正确上传,上传图片后就无法正常工作了,好像不能替换文件夹内的图片

【问题讨论】:

  • unlink() 没有意义,因为临时文件将在脚本执行终止时被 PHP 删除。
  • $place_file 里面有什么?
  • 文件上传了吗?
  • 文件第一次上传正确,上传了图片就不行了,好像不能替换文件夹里面的图片

标签: php php-ini


【解决方案1】:

你可以从这里开始:

  • 跟踪错误:在$maxfilesize = 4109212;下方添加error_reporting(E_ALL);
  • 仔细检查文件夹位置users/$id/filename 表示您将此图像发送到一个名为 users 的文件夹,该文件夹位于运行脚本文件的位置。也许您可以改用绝对路径。另外,$id 变量是否已经设置?

【讨论】:

  • 如果你看一看,OP 说执行是第一次。这意味着 move_uploaded_file() 第二次失败,因为图像已经存在。 OP 在尝试写入新文件之前需要取消链接原始文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2014-06-18
  • 2016-03-23
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多