2016-11-19 5 views
0

私はユーザーがフロントエンドでいくつかの画像をフロントエンドプロファイルにアップロードできる拡張機能を持っています。イメージのアップロードとユーザープロファイルへの保存はうまくいきますが、私はユーザーのコードに従いますが、タイトル、代替と説明も簡単に追加できますか?TYPO3 FALアップロードフロントエンドタイトル、代替と説明を追加

ありがとうございました! Martin

/** @var \TYPO3\CMS\Core\Resource\StorageRepository $storageRepository */ 
     $storageRepository = $this->objectManager->get('TYPO3\CMS\Core\Resource\StorageRepository'); 
     /** @var \TYPO3\CMS\Core\Resource\ResourceStorage $storage */ 
     $storage = $storageRepository->findByUid('1'); 

     #$storageRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\StorageRepository'); 
     #$storage   = $storageRepository->findByUid(1); # Fileadmin = 1 
     #$saveFolder  = $storage->getFolder($this->settings['uploadFolder']); 

     $fileData = array(); 
     $fileData['name'] = $_FILES['tx_key_datenwartung']['name']['logo'][0]; 
     $fileData['type'] = $_FILES['tx_key_datenwartung']['type']['logo'][0]; 
     $fileData['tmp_name'] = $_FILES['tx_key_datenwartung']['tmp_name']['logo'][0]; 
     $fileData['size'] = $_FILES['tx_key_datenwartung']['size']['logo'][0]; 


     // this will already handle the moving of the file to the storage: 
     $newFileObject = $storage->addFile(
       $fileData['tmp_name'], $saveFolder, $userUid.'_'.$fileData['name'] 
     ); 
     $newFileObject = $storage->getFile($newFileObject->getIdentifier()); 
     #$newFile = $this->fileRepository->findByUid($newFileObject->getProperty('uid')); 

     $newFile = $newFileObject->getUid(); 

     $persistenceManager = $this->objectManager->get('TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager'); 
     $persistenceManager->persistAll(); 

     /** @var \Vendor\Myextension\Domain\Model\FileReference $newFileReference */ 
     $newFileReference = $this->objectManager->get('Ven\Key\Domain\Model\FileReference'); 
     $newFileReference->setFile($newFile); 


     $user->addLogo($newFileReference); 
+1

**サイドノート:** '$ fileData ['type']'はユーザーが提出したデータです。 MIMEタイプに関するファイルの内容を検証し、そのMIMEタイプが許可されているかどうかを確認する必要があります。それ以外の場合は、実行可能ファイル(PHP、Perlなど)をユーザーがアップロードしてシステムをハイジャックすることができます。 –

答えて

0

....自分で解決することができます。ただモデル化し、テキストを追加するには、セッターを追加します。

/** 
* Set alternative 
* 
* @param \xx\yy\Domain\Model\File $file 
*/ 
public function setAlternative($alternative) { 
    $this->alternative = $alternative; 
} 
とコントローラへ

$ newFileReference-> setAlternative( 'イメージのためのあなたの代替テキスト');

関連する問題