Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] upload zdjecia
Forum PHP.pl > Forum > PHP > Frameworki
verox
Witam, mam problem z uploadem zdjecia w Symfony 1.2

W generator.yml pisze 

logo:

  type: admin_input_file_tag

ale to nie dziala, poszperalem troche i znalazlem takie cos: 

http://forum.symfony-project.org/index.php...pload#msg_72576

Ale nie dziala to zbyt poprawnie. Prosze o pomoc
nieraczek
Ja jestem nowy w symfony i korzystam z Doctrine i nie wiem czy ciebie dobrze zrozumialem bo nic nie pisalem w generator.yml, w kazdym razie ja zrobilem tak - jeden uzytkownik moze miec tylko jeden obrazek - w ten sposob zrobilem upload:

schema.yml (uwaga exclamation.gif to Doctrine):
  1. <?php
  2. sfGuardUserProfile:
  3.  tableName: sf_guard_user_profile
  4.  columns:
  5.    id:
  6.      type: integer(4)
  7.      primary: true
  8.      autoincrement: true
  9.    user_id:
  10.      type: integer(4)
  11.      default: ''
  12.      notnull: true
  13.      unique: true
  14.    imie:
  15.      type: string(50)
  16.      default: ''
  17.      notnull: true
  18.    nazwisko:
  19.      type: string(100)
  20.      default: ''
  21.      notnull: true
  22.    email:
  23.      type: string(50)
  24.      default: ''
  25.      notnull: true
  26.      unique: true
  27.    zdjecie:
  28.      type: string(100)
  29.      notnull: true
  30. ......................................
  31. ?>



UploadForm.class.php:
  1. <?php
  2. class UploadForm extends sfForm
  3. {
  4.  public function configure()
  5.  {
  6.    $this->setWidgets(array(
  7.      'plik'    => new sfWidgetFormInputFile(),
  8.    ));
  9.    
  10.    $this->widgetSchema->setNameFormat('pliczek[%s]');
  11.  
  12.  
  13.    $this->setValidators(array(
  14.      'plik'    => new sfValidatorFile(array(
  15.          'required'   => true,
  16.          'mime_types' => array('image/jpeg', 'image/png', 'image/gif'),
  17.        'max_size'      => '1024000',
  18.      ),
  19.      array(
  20.      'required'   => 'Musisz wybrać plik do załadowania.',
  21.      'max_size'   => 'Plik jest większy niż 1MB.',
  22.      'mime_types' => 'Dopuszczalne są tylko pliki .jpeg, .png i .gif.',
  23.      )),
  24.    ));    
  25.  
  26.  }
  27. }
  28. ?>


action.class.php:
  1. <?php
  2. public function executeLaduj_obrazek(sfWebRequest $request)
  3.  {
  4.      $this->form1 = new UploadForm();
  5.  
  6.    if ($request->isMethod('post'))
  7.    {
  8.      $this->form1->bind($request->getParameter('pliczek'), $request->getFiles('pliczek'));
  9.      if ($this->form1->isValid())
  10.      {
  11.          /*
  12.         save() - zapisuje zaladowany plik
  13.         getExtension() - zwraca rozszerzenie pliku
  14.         getOriginalName() - zwraca nazwe zaladowanego pliku
  15.         getOriginalExtension() - zwraca rozszerzenie zaladowanego pliku
  16.         */
  17.        $id = $this->getUser()->getGuardUser()->getId();        
  18.        
  19.    
  20.        //zaladowanie obrazka polaczone ze zmiana jego nazwy na: id zalogowanego uzytkownika + rozszerzenie obrazka, np. 1.jpg, 5.gif:
  21.        $file = $this->form1->getValue('plik');
  22.          $filename = $id;
  23.          $extension = $file->getExtension($file->getOriginalExtension());
  24.        $nazwa = $filename.$extension;
  25.          $file->save(sfConfig::get('sf_upload_dir').'/'.$nazwa);        
  26.        
  27.        
  28.        
  29.    
  30.        //tutaj zapytanie wstawiajace do bazy danych nazwe obrazka
  31.  
  32.        $this->redirect('/profil/index'); //przekierowanie
  33.      }
  34.    }        
  35.  }
  36. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.