上载和覆盖已经存在的文件

时间:2020-10-27 20:00:47

标签: php image upload overwrite vbulletin

我已经创建了一个设置,可以上传一个基于产品ID命名该文件的文件,借助此处的一些提交,我设法使其正常运行。有时候,上传内容并不想覆盖我的文件。我的脚本中是否存在任何明显的错误?

$dir = DIR . '/images/productthumbs/';
        if (!is_dir($dir))
        {
            die(construct_phrase($vbphrase['invalid_directory'], $dir));
        }
        $ext = substr($file['name'], strrpos($file['name'], '.'));
        $new_file = $dir . basename('thumbnail_product_' . $id . $ext);
        print_dots_start($vbphrase['please_wait_while_upload']);
        if(file_exists($new_file)) unlink($new_file);{
          move_uploaded_file($new_file);
          if (!move_uploaded_file($file['tmp_name'], $new_file))
          {
            print_dots_stop();
            die(construct_phrase($vbphrase['error_upload'], $file['error']));
          }
        }

1 个答案:

答案 0 :(得分:0)

如果上传与ex文件同名的文件,则ex文件将被删除,新文件将被覆盖。 或者,在上传新文件之前,您可以删除ex文件并上传新文件。 您的某些代码是错误的,您应该编写真实的代码。据我了解,您必须使用:

更改代码
<?php 
   $dir = DIR . '/images/productthumbs/';
   if (!is_dir($dir))
   {
      die(construct_phrase($vbphrase['invalid_directory'], $dir));
   }
   $ext = substr($file['name'], strrpos($file['name'], '.'));
   $new_file = $dir . basename('thumbnail_product_' . $id . $ext);
   print_dots_start($vbphrase['please_wait_while_upload']);
   $ex_file="same path of ex file"; // you have to remove ex file
   if(file_exists($ex_file))
  {
     unlink($ex_file); // with this code you remove ex file
  if (!move_uploaded_file($file['tmp_name'], $new_file))
  {
    print_dots_stop();
    die(construct_phrase($vbphrase['error_upload'], $file['error']));
  }

} ?>

请注意$ ex_file。我不知道哪个变量具有当前的旧文件。我将其重命名为一些名称,以便您清楚理解。