我制作的剧本是。
<?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(日期,时间).png,img(日期,时间).png等。这是可能的,如果是的话,如何我这样做吗?
答案 0 :(得分: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进行了测试,一切正常。
答案 1 :(得分: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);
}
?>
使用此代码 这将在文件名
之前添加时间答案 2 :(得分:0)
您可以使用rename().
例如:
rename ("/var/www/files/file.txt", "/var/www/sites/file1.txt");
或强> 您也可以使用copy
$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 );
答案 3 :(得分: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);