我有一个允许用户提交文件的html页面 以下是我保存提交文件的Web服务。但我不想让move_uploaded_files覆盖现有文件?我该怎么办?谢谢
$tmpname = $_FILES["image"]["tmp_name"];
$movedname = "submit-img/" . $_POST["category"] . "/" . $_FILES["image"]["name"];
$prevPage = parse_url($_SERVER['HTTP_REFERER']);
move_uploaded_file($tmpname, $movedname);
答案 0 :(得分:5)
在你跳跃之前先看看:
if (!is_file($movedname)) {
move_uploaded_file($tmpname, $movedname);
}
答案 1 :(得分:0)
我认为处理这种情况的一种更有效的方法是检查文件是否存在,在这种情况下编辑文件名,直到找不到匹配项,然后上传文件。
public class MyMain()
public void MyMethod() {
AnotherClass.TheEventHandler += DoSomeThing;
}
private void DoSomething(object sender, EventArgs e) {
Debug.WriteLine("I did something");
AnotherClass.ClearAllDelegatesOfTheEventHandler();
}
}
public static class AnotherClass {
public static event EventHandler TheEventHandler;
public static void ClearAllDelegatesOfTheEventHandler() {
foreach (Delegate d in TheEventHandler.GetInvocationList())
{
TheEventHandler -= (EventHandler)d;
}
}
}
答案 2 :(得分:0)
您可以按如下方式检查:
if( !is_file($movedname)) {
move_uploaded_file($tmpname, $movedname);
}
或者假设您想要将相同的文件上传到其他目的,您可以按照以下步骤进行上传:
$tmpname = $_FILES["image"]["tmp_name"].''.time(); // use timestamp string to prevent overwrite files
$movedname = "submit-img/" . $_POST["category"] . "/" . $_FILES["image"]["name"];
$prevPage = parse_url($_SERVER['HTTP_REFERER']);
move_uploaded_file($tmpname, $movedname);