【问题标题】:i need to copy and then rename the copy of a file if it already exists如果文件的副本已经存在,我需要复制然后重命名它
【发布时间】:2013-07-24 17:54:07
【问题描述】:

如果文件已经存在,需要复制然后重命名该文件的副本

$pastaTemp = $_FILES['imagem_principal']['tmp_name'];
$pastaUpload = $_SERVER['DOCUMENT_ROOT']."/casaunica/imagens/acabamentos/";
$arquivo = $pastaUpload . $_FILES['imagem_principal']['name']; //filename.jpg

if(!file_exists($pastaUpload. $_FILES['imagem_principal']['name'])){
      $arquivo = $pastaUpload . $_FILES['imagem_principal']['name'];
} else {
    $nome_arquivo = explode(".",$_FILES['imagem_principal']['name']);
       do {
          $para = $nome_arquivo[0]."_".$i.".".$nome_arquivo[1];
          $nome_novo = rename($arquivo, $pastaUpload . $para);
          $arquivo = $pastaUpload .$nome_novo;
          $i++; 
       } while(file_exists($pastaUpload.$_FILES['imagem_principal']['name']));
}

输出:文件名.jpg_1

应该是:filename_2.jpg

它不能替换旧文件.. 这就是为什么我需要用数字重命名 它不需要循环制作,但每次上传文件时

【问题讨论】:

  • 看起来爆炸没有按您希望的方式工作
  • 爆炸有效,可能重命名函数错误或者我应该使用另一个函数
  • 你试过回显 $para 吗?那条线似乎是问题最明显的根源,虽然我看不出有什么特别错误
  • 我做了,它是正确的,我已经改变了 do while,它可以工作,但它替换了旧文件

标签: php file-upload filenames file-rename


【解决方案1】:

试试这个代码,让我知道它是否有效

功能

<?php
  function recursive_naming( $file, $i = 1 ) {
    $dirname    = dirname( $file ).DIRECTORY_SEPARATOR;
    $filename   = pathinfo( $file, PATHINFO_FILENAME );
    $extension  = pathinfo( $file, PATHINFO_EXTENSION );

    if ( !file_exists( $file ) ) {
      return $file;
    }
    $filename = preg_replace( '/_\d+$/', '', $filename );
    $file = $dirname.$filename."_".$i.".".$extension;
    $i++;
    return recursive_naming( $file, $i );
  }
?>

示例:

<?php
  $pastaTemp    = $_FILES['imagem_principal']['tmp_name'];
  $pastaUpload  = $_SERVER['DOCUMENT_ROOT']."/casaunica/imagens/acabamentos/";
  $arquivo      = recursive_naming( $pastaUpload.$_FILES['imagem_principal']['name'] );
?>

如果filename.jpg存在则输出filename_2.jpg,如果filename_2.jpg也存在则输出filename_3.jpg,以此类推...

【讨论】:

猜你喜欢
  • 2015-06-14
  • 2019-02-04
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 2018-08-11
  • 1970-01-01
  • 2012-04-02
相关资源
最近更新 更多