我不希望php移动上传的文件覆盖现有文件
我有一个允许用户提交文件的html页面。 下面是我保存提交文件的web服务。但是我不想移动上传的文件来覆盖现有的文件?我该怎么办?多谢各位我不希望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
$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;我只是想发布一个答案不过,这不会上载我们选择的文件。我认为一种更常见的情况是无论如何都要上传它,更改它的名称以防止覆盖。但这不会上传我们选择的文件。我认为一种更常见的情况是无论如何上传它,更改它的名称以防止覆盖。