1

ユーザーがファイルを送信できる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);
4

3 に答える 3

5

石橋を叩いて渡る:

if (!is_file($movedname)) {
    move_uploaded_file($tmpname, $movedname);
}
于 2012-06-19T09:31:30.043 に答える
1

この状況を処理するより効率的な方法は、ファイルが存在するかどうかを確認することだと思います。この場合、一致するものが見つからなくなるまでファイル名を編集してから、ファイルをアップロードします。

$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);
于 2016-07-21T14:19:54.063 に答える
0

次のように確認できます。


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);
于 2016-07-21T14:28:17.960 に答える