0

我在 TCA 中有一个类型为 group->file 的字段,我需要根据年份将文件保存在不同的目录中。

通常,当我需要对任何字段进行 pos 处理时,我会使用 processDatamap_afterDatabaseOperations 挂钩,但它无法正常处理文件。

这就是我正在做的事情。

function processDatamap_afterDatabaseOperations ($status, $table, $id, &$fieldArray, &$reference) { 

    if ($table=='tx_students' && isset($fieldArray['documents'])){
        $path = $_SERVER['DOCUMENT_ROOT'].'/folder/';
        $folder = date('Y').'/';
        $filename = date('Y-m-d').' '.$student['first_name'].' '.$student['last_name'].'.zip';
        $filename = str_replace(' ','_',$filename); 

        if (!file_exists($path.$folder)) {
            mkdir($path.$folder, 0755, true);
            $fh = fopen($path.$folder.'index.html','w+');
            fclose($fh);
        }

        rename($path.$fieldArray['documents'],$path.$folder.$filename);

        $GLOBALS['TYPO3_DB']->exec_UPDATEquery($table,'uid='.$student['uid'],array('documents'=>$folder.$filename));
    }

}

我正在尝试将文件名与文件夹路径一起存储在数据库中,并且在我第一次保存表单时效果很好。但是接下来的时间我得到一个错误,因为 TYPO3 找不到文件。当我尝试删除文件以及单击 x 时会发生这种情况。

这是该字段的 TCA:

    'documents' => array(
        'exclude' => 1,
        'label' => '',
        'config' => array(
            'type' => 'group',
            'internal_type' => 'file',
            'allowed' => 'zip',
            'max_size' => $GLOBALS['TYPO3_CONF_VARS']['BE']['maxFileSize'],
            'uploadfolder' => 'uploads/incoming',
            'show_thumbs' => 1,
            'size' => 1, 
            'minitems' => 0,
            'maxitems' => 1,
        ),
    ),

我想按年份组织这些文件,但我不知道如何在 TYPO3 中执行此操作。这是另一个钩子吗?似乎 TYPO3 正在删除某些操作的斜线之前的路径部分。

我正在使用 TYPO3 4.5 LTS。有什么建议么?

4

1 回答 1

-1
  1. 升级到 6.2 测试版
  2. 使用假
  3. 使用类别对文件进行排序/分类。

您正在使用的目录不打算以这种方式使用;)

于 2013-11-14T07:59:31.533 回答