在我的服务器中,我有一个包含数千张图像的唯一upload
文件夹,因此我想使用子文件夹重新组织它们,例如../uploads/img/year/month/filename
。
对于上传的所有新图片,我使用这段适用于我的代码:
$path = __DIR__ .'/../uploads/img/' . date("Y") . '/' . date("m") . '/' . $filename;
if (!is_dir($path)) {
mkdir($path, 0775, true);
}
我如何为已经在上传文件夹中的所有文件执行相同的操作,以创建新目录并按照上次修改日期对所有文件进行排序?
例如
filename | last modified date
------ | ------
1.jpg | 24/02/2016
2.jpg | 24/04/2016
3.jpg | 24/06/2016
4.jpg | 20/08/2016
5.jpg | 24/08/2016
:定位:
../uploads/img/2016/02/1.jpg
../uploads/img/2016/04/2.jpg
../uploads/img/2016/06/3.jpg
../uploads/img/2016/08/4.jpg
/5.jpg
我的尝试
function grab_pictures() {
$mpath = __DIR__ .'/../uploads/media';
foreach (glob("$mpath/*") as $file) {
$lastmoddate = filemtime($file);
$basename = basename($file);
$month = date("m", filemtime($lastmoddate));
$year = date("Y", filemtime($lastmoddate));
$newPath = __DIR__ .'/../uploads/media/' .$year. '/' .$month. '/';
if (!is_dir($newPath)) {
mkdir($newPath, 0775, true);
}
$newName = '/' .$year. '/' .$month. '/' .$basename;
$this->db->query(sprintf("UPDATE `images` SET `path` = '%s', `time` = `time`", $newName));
// Move the file into the uploaded folder
move_uploaded_file($basename, $newPath);
}
}
但它不起作用,没有文件被移动,只创建了一个文件夹(1970/01)
解
function grab_pictures() {
$mpath = __DIR__ .'/../uploads/media';
foreach (glob("$mpath/*") as $file) {
if(!is_dir($file)){
$lastmoddate = filemtime($file);
$basename = basename($file);
$month = date("m", $lastmoddate);
$year = date("Y", $lastmoddate);
$newPath = __DIR__ .'/../uploads/media/' .$year. '/' .$month. '/';
if (!is_dir($newPath)) {
mkdir($newPath, 0775, true);
}
$newName = '/' .$year. '/' .$month. '/' .$basename;
$old_Path = $mpath. '/' .$basename;
$new_Path = $mpath.$newName;
$this->db->query(sprintf("UPDATE `tracks` SET `art` = '%s', `time` = `time` WHERE `art` = '%s'", $newName,$basename));
// Move the file
rename($old_Path, $new_Path);
}
}
}
答案 0 :(得分:1)
您可以尝试PHP中提供的p{
clear: both;
margin: 0;
padding: 0;
display:block;
}
span.blue{
background: blue;
}
span.green{
background: green;
}
span.black{
background: black;
}
span.circle{
display:inline-block;
width: 15px;
height: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
vertical-align:middle;
}
span.desc{
display:inline-block;
width: 115px;
vertical-align:middle;
}
功能。它返回可以与日期函数
一起使用的时间戳
试试<div class="container">
<p>
<span class="blue circle"></span>
<span class="desc">Blue text</span>
</p>
<p>
<span class="green circle"></span>
<span class="desc">Green text</span>
</p>
<p>
<span class="black circle"></span>
<span class="desc">black text</span>
</p>
</div>
在循环遍历所有文件的for循环中运行filemtime函数。这可能是循环的流程。
请在此处查看以下代码段。它可能就是你正在寻找的东西。
filemtime(filename)
我希望它有助于澄清一些问题。 请检查此reference page for the usage of filemtime()