我在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。有什么建议吗?
答案 0 :(得分:-1)
您使用的目录不打算以这种方式使用;)