Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我不希望php移动上传的文件覆盖现有文件_Php_File Upload - Fatal编程技术网

我不希望php移动上传的文件覆盖现有文件

我不希望php移动上传的文件覆盖现有文件,php,file-upload,Php,File Upload,我有一个允许用户提交文件的html页面。 下面是我保存提交文件的web服务。但是我不想移动上传的文件来覆盖现有的文件?我该怎么办?多谢各位 $tmpname = $_FILES["image"]["tmp_name"]; $movedname = "submit-img/" . $_POST["category"] . "/" . $_FILES["image"]["name"]; $prevPage = parse_url($_SERVER['HTTP_REFERER']); move_up

我有一个允许用户提交文件的html页面。 下面是我保存提交文件的web服务。但是我不想移动上传的文件来覆盖现有的文件?我该怎么办?多谢各位

$tmpname = $_FILES["image"]["tmp_name"];
$movedname = "submit-img/" . $_POST["category"] . "/" . $_FILES["image"]["name"];
$prevPage = parse_url($_SERVER['HTTP_REFERER']);

move_uploaded_file($tmpname, $movedname);
三思而后行:

if (!is_file($movedname)) {
    move_uploaded_file($tmpname, $movedname);
}
三思而后行:

if (!is_file($movedname)) {
    move_uploaded_file($tmpname, $movedname);
}

我认为处理这种情况更有效的方法是检查文件是否存在,在这种情况下,编辑文件名直到找不到匹配的文件,然后上传文件

$x=1;
$newfilename=$movedname;

while(is_file($_SERVER['DOCUMENT_ROOT'].$newfilename)){ //actual control

  $newfilename=$movedname;//to prevent creating flower123.jpg at the third iteration, see below

  $fn=explode(".",$newfilename);
  $fp=count($fn)-2;
  $fn[$fp].=$x;
  //here we get the filename before extension (eg. "flower" in fakepath/flower.jpg) and add $x to get "flower1"

  $newfilename=implode(".",$fn);
  //we rebuild our path having now fakepath/flower1.jpg
  $x++;
}

move_uploaded_file($filevar['tmp_name'], $_SERVER['DOCUMENT_ROOT'].$newfilename);

我认为处理这种情况更有效的方法是检查文件是否存在,在这种情况下,编辑文件名直到找不到匹配的文件,然后上传文件

$x=1;
$newfilename=$movedname;

while(is_file($_SERVER['DOCUMENT_ROOT'].$newfilename)){ //actual control

  $newfilename=$movedname;//to prevent creating flower123.jpg at the third iteration, see below

  $fn=explode(".",$newfilename);
  $fp=count($fn)-2;
  $fn[$fp].=$x;
  //here we get the filename before extension (eg. "flower" in fakepath/flower.jpg) and add $x to get "flower1"

  $newfilename=implode(".",$fn);
  //we rebuild our path having now fakepath/flower1.jpg
  $x++;
}

move_uploaded_file($filevar['tmp_name'], $_SERVER['DOCUMENT_ROOT'].$newfilename);

您可以通过以下方式进行检查:


if( !is_file($movedname)) {

    move_uploaded_file($tmpname, $movedname);
}

$tmpname = $_FILES["image"]["tmp_name"];  // use timestamp string to prevent overwrite files
$filename = $_FILES["image"]["name"] . '_' . time();

$movedname = "submit-img/" . $_POST["category"] . "/" . $filename;

$prevPage = parse_url($_SERVER['HTTP_REFERER']);

move_uploaded_file($tmpname, $movedname);
或者,如果您想出于其他目的上传同一个文件,也可以按如下操作:


if( !is_file($movedname)) {

    move_uploaded_file($tmpname, $movedname);
}

$tmpname = $_FILES["image"]["tmp_name"];  // use timestamp string to prevent overwrite files
$filename = $_FILES["image"]["name"] . '_' . time();

$movedname = "submit-img/" . $_POST["category"] . "/" . $filename;

$prevPage = parse_url($_SERVER['HTTP_REFERER']);

move_uploaded_file($tmpname, $movedname);

您可以通过以下方式进行检查:


if( !is_file($movedname)) {

    move_uploaded_file($tmpname, $movedname);
}

$tmpname = $_FILES["image"]["tmp_name"];  // use timestamp string to prevent overwrite files
$filename = $_FILES["image"]["name"] . '_' . time();

$movedname = "submit-img/" . $_POST["category"] . "/" . $filename;

$prevPage = parse_url($_SERVER['HTTP_REFERER']);

move_uploaded_file($tmpname, $movedname);
或者,如果您想出于其他目的上传同一个文件,也可以按如下操作:


if( !is_file($movedname)) {

    move_uploaded_file($tmpname, $movedname);
}

$tmpname = $_FILES["image"]["tmp_name"];  // use timestamp string to prevent overwrite files
$filename = $_FILES["image"]["name"] . '_' . time();

$movedname = "submit-img/" . $_POST["category"] . "/" . $filename;

$prevPage = parse_url($_SERVER['HTTP_REFERER']);

move_uploaded_file($tmpname, $movedname);

有点像如果!文件\u存在$movedname移动\u上载\u文件$tmpname,$movedname;我只是想发布一个答案有点像如果!文件\u存在$movedname移动\u上载\u文件$tmpname,$movedname;我只是想发布一个答案不过,这不会上载我们选择的文件。我认为一种更常见的情况是无论如何都要上传它,更改它的名称以防止覆盖。但这不会上传我们选择的文件。我认为一种更常见的情况是无论如何上传它,更改它的名称以防止覆盖。