前端图片上传并在typo3中构建文件引用

Posted

技术标签:

【中文标题】前端图片上传并在typo3中构建文件引用【英文标题】:Frontend image upload and build a file reference in typo3 【发布时间】:2019-12-05 17:34:13 【问题描述】:

首先,我对typo3 很陌生。 我用扩展构建器构建了一个扩展,现在我想从前端上传图像。上传和创建文件夹功能工作正常。但是typo3在上传后不输出文件。根据几个谷歌搜索,我认为它与 file_reference 函数有关。但我真的坚持这一点。希望有人能帮我解决这个问题。

这是我的 creatAction 函数:

 public function createAction(\Demian\Inserateextension\Domain\Model\myObject $newObject)
    


    $chiffre = $_POST['tx_myplugin']['myObject']['chiffre'];
    $newImagePath = 'inserate/'.$chiffre;


    if ($_FILES['tx_myplugin']['name']['gallerie'][0]) 


        $tmpName = $_FILES['tx_myplugin']['name']['gallerie'][0];
        $tmpFile  = $_FILES['tx_myplugin']['tmp_name']['gallerie'][0];

        $storageRepository = $this->objectManager->get('TYPO3\\CMS\\Core\\Resource\\StorageRepository');
        $storage = $storageRepository->findByUid('1'); //this is the fileadmin storage

        //build the new storage folder
        $targetFolder = $storage->createFolder($newImagePath);

     //Upload the file
        $movedNewFile = $storage->addFile($tmpFile, $targetFolder, $tmpName);





    $this->myObjectRepository->add($newObject);
    $this->redirect('list');

【问题讨论】:

【参考方案1】:

也许你应该看看这个存储库。这是一个很好的例子,如何在 TYPO3 中使用 FAL 处理文件上传。 也许有点旧,但机制应该变得清晰。 https://github.com/helhum/upload_example

【讨论】:

谢谢!我会试试的 如果您使用typo3_9,则不应使用TYPO3 6.2【参考方案2】:

这是我目前所拥有的:

公共函数 createAction(\Demian\Inserateextension\Domain\Model\myObject $newObject) $chiffre = $_POST['tx_myplugin']['myObject']['chiffre']; $newImagePath = '插入/'.$chiffre; if ($_FILES['tx_myplugin']['name']['gallerie'][0]) $tmpName = $_FILES['tx_myplugin']['name']['gallerie'][0]; $tmpFile = $_FILES['tx_myplugin']['tmp_name']['gallerie'][0]; $storageRepository = $this->objectManager->get('TYPO3\\CMS\\Core\\Resource\\StorageRepository'); $storage = $storageRepository->findByUid('1'); //这是文件管理存储 //建立新的存储文件夹 $targetFolder = $storage->createFolder($newImagePath); //上传文件 $movedNewFile = $storage->addFile($tmpFile, $targetFolder, $tmpName); $this->myObjectRepository->add($newObject); $this->redirect('list'); $this->buildRelations($newObject->getUid(), $movedNewFile, 'gallerie', 'tx_myplugin', $storagePid); 私有函数 buildRelations($newStorageUid, $file, $field, $table, $storagePid) $数据 = 数组(); $data['sys_file_reference']['NEW1234'] = 数组( 'uid_local' => $file->getUid(), 'uid_foreign' => $newStorageUid, 'tablenames' => $table, '字段名' => $字段, 'pid' => $storagePid, 'table_local' => 'sys_file', ); $data[$table][$newStorageUid] = array('image' => 'NEW1234'); /** @var \TYPO3\CMS\Core\DataHandling\DataHandler $tce */ $tce = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\DataHandling\DataHandler'); // 创建 TCE 实例 $tce->start($data, array()); $tce->process_datamap();

所以现在它在 sys_file 中上传文件和数据库条目,并在 my_exteension_domain_model_myObject 中创建,但图像路径仍未显示在流体变量“myObject.gallerie.originalResource.publicUrl”中。 “l10n_diffsource”列也为空,但应该类似于:

a:7s:16:"sys_language_uid";N;s:6:"hidden";N;s:5:"title";N;s:7:"chiffre";N; s:8:"画廊";N;s:9:"st…

【讨论】:

以上是关于前端图片上传并在typo3中构建文件引用的主要内容,如果未能解决你的问题,请参考以下文章

WPF 如何上传图片到服务器,并在客户端获取显示图片?

图片上传太慢php

前端图片预览,上传前预览,兼容IE7891011,Firefox,Chrome

原生方式实现图片,文件上传,和使用ElmentUI使用Drag方式自动上传图片,手动上传图片

前端图片上传的两种逻辑分析

微信小程序/网站 上传图片到腾讯云COS