代码无法在同一天上载多个文件,并且无法创建第二天和下个月的上载

时间:2018-12-22 16:06:28

标签: php

我想自动获取年,月和日。使用以下信息,我想为每日上传创建一个文件夹。

$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。

它基本上应该自己增加。

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;
    }
}