TYPO3:如何使用extbase文件上传?

Cha*_*net 3 typo3 extbase

我正在构建一个基于extbase/fluid的简单扩展,它在前端插件中有一个上传表单.它在6.0.4中工作,但是当我尝试上传文件时,我现在得到以下异常:

#1297759968:属性路径"fichier"属性映射时的异常:找不到可用于将"数组"转换为"字符串"的转换器.

问题似乎与Web请求接收上载文件的数组这一事实有关,但模型将其存储为字符串.我怎样摆脱这个例外?我该如何处理extbase中的文件上传?


扩展开始使用Extension Builder.fichier是Model中的字符串属性,包含上载文件的名称(位于其中uploads/tx_myext/).该插件的模板包含从form.uploadViewHelper 构建的上载字段.在TYPO3 6.0.4上,当我提交表单时,我收到一个对象作为函数的参数createAction.从那个对象,我调用getFichier它返回上传文件的文件数组.然后,我可以提取原始文件名,将临时文件复制到正确的位置,并fichier使用原始文件名设置属性的值.

现在,在TYPO3 6.1.0中,我在进入createAction函数之前得到了上述异常.我的客人是PropertyMapper试图将文件数组转换为字符串以匹配fichier属性的类型.

我不知道的是它之前的工作方式是一个bug,还是现在它的工作方式就是bug.如果它真的按照预期的方式工作,我应该如何处理extbase扩展中的文件上传?

Ben*_*min 7

 /**
 * initialize actions
 */
public function initializeAction() {
    if ($this->arguments->hasArgument('myModel')) {
        $this->arguments->getArgument('myModel')->getPropertyMappingConfiguration()->setTargetTypeForSubProperty('upload', 'array');
    }
}
Run Code Online (Sandbox Code Playgroud)

http://www.typo3lexikon.de/typo3-tutorials/extensions/extbase/property-mapper.html

  • 可能值得指出的是,对于Controler的每个动作调用`initializeAction`,并且`myModel`指的是赋给`createAction()`函数的变量的名称. (5认同)