3

私が作ったスクリプトは.

<?php

$source_file = 'http://www.domain.tld/directory/img.png'; 
$dest_file = '/home/user/public_html/directory/directory/img.png'; 

copy($source_file, $dest_file);

?>

スクリプトが実行されるたびにその画像を削除して再アップロードしないようにする必要があります。私はそれをimg1.png、img2.png、img3.pngなどにするか、img(Date、Time).png、img(Date、Time).pngなどにしたいと思います。これは可能ですか?私はこれをしますか?

4

4 に答える 4

7

ファイルの上書きが心配な場合は、タイムスタンプをドロップするだけで、一意性を確保できます。

$dest_file = '/home/user/public_html/directory/directory/img.png';

// /home/user/public_html/directory/directory/img1354386279.png
$dest_file = preg_replace("/\.[^\.]{3,4}$/i", time() . "$0", $dest_file);

より単純な番号が必要な場合は、少しタスクの多いルートを使用して、宛先ファイル名のファイルがすでに存在する限り、その名前を変更できます。

$file = "http://i.imgur.com/Z92wU.png";
$dest = "nine-guy.png";

while (file_exists($dest)) {
    $dest = preg_replace_callback("/(\d+)?(\.[^\.]+)$/", function ($m) {
        return ($m[1] + 1) . $m[2];
    }, $dest);
}

copy($file, $dest);

匿名関数のコールバックには、新しいバージョンのPHPを使用する必要がある場合があります。私は5.3.10でテストしましたが、すべてが正常に機能しました。

于 2012-12-01T18:25:00.550 に答える
0
<?php

$source_file = 'http://www.domain.tld/directory/img.png'; 
$dest_file = '/home/user/public_html/directory/directory/img.png'; 
if(!is_file($dest_file)){
copy($source_file, $dest_file);
}
else{
$fname = end(explode('/',$dest_file));
$fname = time().'-'.$fname;
$dest_file = dirname($dest_file).'/'.$fname;
copy($source_file,$dest_file);
}
?>

このコードを使用すると、ファイル名の前に時間が追加されます

于 2012-12-01T17:38:08.477 に答える
0

rename()を使用できます。

例えば:

rename ("/var/www/files/file.txt", "/var/www/sites/file1.txt");

またはコピー を使用することもできます

$source_file = 'http://www.domain.tld/directory/img.png'; 
$dest_file = '/home/user/public_html/directory/directory/img.png'; 
if(!is_file($dest_file)){
copy($source_file, $dest_file);
}

または、時間を追加したい場合は、このように試すことができます。

 $source="http://www.domain.tld/directory/";
 $destn ="/home/user/public_html/directory/directory/";
 $filename="image.png";
 $ex_name = explode('.',$filename));
 $newname = $ex_name[0].'-'.time().$ex_name[1]; //where $ex_name[0] is filename and $ex_name[1] is extension.

 copy($source.filename,$destn.$newname );
于 2012-12-01T17:40:47.820 に答える
0
$source_file = 'http://www.domain.tld/directory/img.png'; 
$dest_file = '/home/user/public_html/directory/directory/img'.uniqid().'.png'; 
copy($source_file, $dest_file);

uniquid は、ほとんど上書きできない一意の ID を提供します...

また、毎月または画像のIDに関連するフォルダーを作成します

お気に入り

mkdir(ceil($imgId / 1000), 0777);
于 2012-12-01T17:46:39.300 に答える