0

やあみんな、私はjquery ajaxファイルアップローダーを作成しましたが、サーバー側の問題が1つあります。同じ名前のファイルが上書きされ、乱数が生成されます。これは別のファイルとは異なるはずです。 1つですが、アップローダーのコードは

<?php
$target_path = "/var/www/vhosts/grubber.co.nz/httpdocs/developer/_social_development/uploads/blog/";
$target_path = $target_path . basename( $_FILES['img']['name']); 


if (file_exists($target_path)) {
    echo "The file $filename exists";
    $target_path = "/var/www/vhosts/grubber.co.nz/httpdocs/developer/_social_development/uploads/blog/" . basename( $_FILES['img']['name']); 
} else {
    echo "The file $filename does not exist";
}


if(move_uploaded_file($_FILES['img']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['img']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}
?>

質問、ファイルが存在するかどうか、および乱数が生成されて名前に追加されるかどうかを確認したいのですが?続行してファイルを書き込むだけではない場合。

4

1 に答える 1

3

1つの解決策は、ファイル名の前に一意の番号を付けることです。

uniqid()関数を使用できます。http://php.net/manual/en/function.uniqid.php

<?php
$target_path = "/var/www/vhosts/grubber.co.nz/httpdocs/developer/_social_development/uploads/blog/";
$target_path = $target_path . basename( $_FILES['img']['name']); 


if (file_exists($target_path)) {
    echo "The file $filename exists";
    $target_path = "/var/www/vhosts/grubber.co.nz/httpdocs/developer/_social_development/uploads/blog/" .uniqid().basename( $_FILES['img']['name']); 
} else {
    echo "The file $filename does not exist";
}


if(move_uploaded_file($_FILES['img']['tmp_name'], $target_path)) {
    echo "The file ".basename( $_FILES['img']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}
?>
于 2012-10-20T07:09:04.053 に答える