我想自动获取年,月和日。使用以下信息,我想为每日上传创建一个文件夹。
$videoFolder = $_SERVER['DOCUMENT_ROOT']."/Videos/";
if (!empty($_FILES)) {
$date = new DateTime();
$tempFile = $_FILES['file']['tmp_name'];
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$targetFile = $date->getTimestamp() . "." . $extension;
$year = date("Y");
$month = date("M");
$day = date("d");
if (is_dir($videoFolder . $year . "/" . $month . "/" . $day)) {
move_uploaded_file($tempFile, $dayFolder.$targetFile);
print $targetFile;
}
if (!is_dir($videoFolder.$year)) {
mkdir( $videoFolder.$year );
$yearFolder = $videoFolder.$year."/";
if (!is_dir($yearFolder.$month)) {
mkdir($yearFolder. $month);
$monthFolder = $yearFolder . $month . "/";
if (!is_dir($monthFolder . $day)) {
mkdir($monthFolder.$day);
$dayFolder = $monthFolder . $day . "/";
move_uploaded_file($tempFile, $dayFolder.$targetFile);
print $targetFile;
}
}
}
}
EG:今天是18 / Dec / 22
因此,如果该文件夹不存在,请创建该文件夹,然后将上传文件放在该目录中。
我将日期设置为23日进行了测试,没有创建任何文件夹。
EG:新年代码应自动知道并创建文件夹2019,其中Jan的子文件夹然后Jan的子文件夹为1。 结束Dir结果; / Videos / 2019 / Jan / 1,那么2月将是/ Videos / 2019 / Feb / 1。
它基本上应该自己增加。
答案 0 :(得分:0)
为了确保您的操作,我已经稍微简化了脚本,并在视频路径中添加了realpath()。 你能告诉我这行不通吗?
<?php
$videoFolder = realpath($_SERVER['DOCUMENT_ROOT']) . "/Videos/";
if (!empty($_FILES)) {
$date = new DateTime();
$tempFile = $_FILES['file']['tmp_name'];
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$targetFile = $date->getTimestamp() . "." . $extension;
$year = date("Y");
$month = date("M");
$day = date("d");
$dayFolder = $videoFolder . $year . "/" . $month . "/" . $day . "/";
if (!is_dir($dayFolder)) {
$mkdir_result = mkdir($dayFolder, 0775, true); // make new directory recursively
var_dump($mkdir_result);
if ($mkdir_result) {
move_uploaded_file($tempFile, $dayFolder . $targetFile);
print $targetFile;
}
} else {
move_uploaded_file($tempFile, $dayFolder . $targetFile);
print $targetFile;
}
}