Zum Inhalt springen

File-Upload: Wie geht das?

Erstellt am 18. Juli 2012 · 1 Antwort · letzte Antwort am 15. August 2012

Tags: Datei-Upload, Frage

robsch ·

Hi,

weiß irgendwer, wie man im BE einen Benutzer eine Textdatei hochladen lassen kann? Ich verstehe mal wieder gar nichts. Ich hätte gedacht, mit f:form.upload geht das ganz leicht.

http://typo3blogger.de/extbase-file-upload/ hatte ich auch schon gelesen. Aber irgendwie bringt mich das gar nicht weiter. Muss das form-Element ein object-Attribut haben (vielleicht ist das eine blöde Frage...)? D.h. brauche ich ein Modellobjekt, dem da etwas zugewiesen wird? Ist das der Dateiname?

Hat wer vielleicht ein ganz einfaches Beispiel?

Danke,
Robert

rayphi ·

Mal ganz schlicht gehalten da ich auch nicht mehr aus deiner Frage entnehmen kann

Mit bestem Gruß
Rayphi

----- Controller -----
/**
   * action new
   *
   * @param Tx_ExtKey_Domain_Model_ModelName $newModelObject
   * @dontvalidate $newModelObject
   * @return void
   */
  public function newAction(Tx_ExtKey_Domain_Model_ModelName $newModelObject = NULL) {
    if ($newModelObject == NULL) { // workaround for fluid bug ##5636
      $newModelObject = t3lib_div::makeInstance('Tx_ExtKey_Domain_Model_ModelName');
    }
    $this->view->assign('newModelObject', $newModelObject);
  }

  /**
   * action create
   *
   * @param Tx_ExtKey_Domain_Model_ModelName $newModelObject
   * @dontvalidate $newModelObject
   * @return void
   */
  public function createAction(Tx_Atohtmlexport_Domain_Model_StaticHtmlExport $newModelObject) {
    if ($_FILES['tx_extkey_tools_extkeyextkey']) {
      $basicFileFunctions = t3lib_div::makeInstance('t3lib_basicFileFunctions');
    
      $fileName = $basicFileFunctions->getUniqueName(
          $_FILES['tx_extkey_tools_extkeyextkey']['name']['newModelObject']['fileName'],
          t3lib_div::getFileAbsFileName('uploads/tx_extkey/'.$fileName));
    
      t3lib_div::upload_copy_move(
          $_FILES['tx_extkey_tools_extkeyextkey']['tmp_name']['newModelObject']['fileName'],
          $fileName);
    
      $newModelObject->setFileName(basename($fileName));
    }
    $this->modelObjectRepository->add($newModelObject);
    $this->redirect('list');
  }
  
----- Model -----
  /**
   * @var string
   * @validate NotEmpty
   */
  protected $fileName;

  /**
   * Returns the fileName
   *
   * @return string $fileName
   */
  public function getFileName() {
    return $this->fileName;
  }

  /**
   * Sets the fileName
   *
   * @param string $fileName
   * @return void
   */
  public function setFileName($fileName) {
    $this->fileName = $fileName;
  }
----- View -----
<f:form action="create"  enctype="multipart/form-data"  name="newModelObject" object="{newModelObject}">
  <label for="fileName">
    <f:translate key="tx_extkey_domain_model_modelname.file_name" /> <span class="required">(required)</span>
  </label><br />
  <f:form.upload property="fileName" /><br />
  <f:form.submit value="Create new" />
</f:form>