设置不同的目录以从单个字段上传TYPO3中的文件

时间:2013-11-14 06:32:15

标签: typo3

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

通常当我需要对任何字段进行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。有什么建议吗?

1 个答案:

答案 0 :(得分:-1)

  1. 升级到6.2 beta
  2. 使用fal
  3. 使用类别对文件进行排序/分类。
  4. 您使用的目录不打算以这种方式使用;)