gpt4 book ai didi

typo3 - 如何使用 TYPO3 Fluid form.upload 上传文件并将其传递给 Extbase Controller

转载 作者:行者123 更新时间:2023-12-02 16:48:06 32 4
gpt4 key购买 nike

我正在使用 form.upload用于上传文件的 ViewHelper。

<f:form enctype="multipart/form-data" action="list" name="import" object="{import}" method="POST">
<f:form.upload name="file" property="file" />
<f:form.submit value="Submit" />
</f:form>

问题是访问文件。 $import 对象包含一个文件名,但该文件不存在。

最佳答案

我的问题是,文件在处理时已经被删除了。我重定向到我的 Controller 操作中的另一个操作,这启动了一个新请求。

$this->redirect('list', $import);

The file will be deleted from the temporary directory at the end of the request if it has not been moved away or renamed.

( https://www.php.net/manual/en/features.file-upload.post-method.php )

文件的上传方式不是 TYPO3 特定的,可以有不同的处理方式,请参见上面的链接。

  • 您还应该相应地设置临时路径,请参见上面的链接。
  • 可以使用 accept 限制文件类型,例如accept='text/csv'

我在后端模块中使用它。以下代码有效。

流体

<f:form enctype="multipart/form-data" action="create" name="import" object="{import}" method="POST">
<f:form.upload name="file" property="file" />
<f:form.submit value="Submit" />
</f:form>

模型类:Import.php

class Import extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/** @var array */
protected $file = [];

/**
* @return array
*/
public function getFile()
{
return $this->file;
}

/**
* @param array $file
* @return void
*/
public function setFile(array $file)
{
$this->file = $file;
}
}

Controller createAction()

/**
* @param Import $import
* @return void
*/
public function createAction(Import $import)
{
$file = $import->getFile();
if ($file) {
$path = $file['tmp_name'];
}
// ...
}

该操作使用包含正确填写元数据的文件属性的 Import 对象调用,例如

['name'] = myfile.csv
['type'] = 'text/csv'
['tmp_name'] = '/tmp/hpGLv1E'
['error'] = 0
['size'] = 51550

关于typo3 - 如何使用 TYPO3 Fluid form.upload 上传文件并将其传递给 Extbase Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59719142/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com