Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: upload image + resize image = zapis 2 plikow na serwerze
Forum PHP.pl > Forum > PHP
Ramzess
witam,

pewnie juz bylo, ale nie znalazlem, a pilnie potrzebuje:

upload zdjec do konkretnego katalogu oraz w tym czasie generowanie dodatkowo miniatruki ktorej nazwa bedzie taka jak nazwa orginalu z dodaniem suffixa m czyli:

zdjecie.jpg oraz zdjeciem.jpg

jak to zrobic ?

pozdrawiam
Kamil
Athlan
Moja klasa (stara wersja):
http://rafb.net/p/REe4a563.html

użycie bardzo proste, obczaj to:
  1. <?php
  2. $oView->aDataPhotos = $oModelFoto->getUserPhotos($oUser->id);
  3.  
  4. if($oInput->post('data') !== null)
  5. {
  6. $aErrors = array();
  7.  
  8. $oFile = new Vfile('file');
  9.  
  10. if(count($oView->aDataPhotos) >= PHOTO_MAXUSERPHOTOS)
  11. $aErrors[1] = 'Dodaleś już '.PHOTO_MAXUSERPHOTOS.' fotografii, nie możesz posiadać więcej.';
  12. if(!$oFile->temp)
  13. $aErrors[1] = 'Nie wybrano pliku';
  14.  
  15. if(count($aErrors) < 1)
  16. {
  17. $bImage = true;
  18.  
  19. try
  20. {
  21. $oImage1 = new Vimage($oFile->temp);
  22. $oImage2 = new Vimage($oFile->temp);
  23. }
  24. catch(VimageException $oException)
  25. {
  26. $aErrors[1] = 'Niewłaściwy format pliku: ' . $oFile1->type;
  27. $bImage = false;
  28. }
  29.  
  30. if($oImage1->getX() < PHOTO_F_MIN_X)
  31. $aErrors[1] = 'Obraz jest za wązki!';
  32. elseif($oImage1->getY() < PHOTO_F_MIN_Y)
  33. $aErrors[1] = 'Obraz jest za niski!';
  34.  
  35. if($aErrors[1])
  36.  $aErrors[1] .= ' Minimalna szerokość to ' . PHOTO_F_MIN_X . ' pikseli, a wysokość to ' . PHOTO_F_MIN_Y . ' pikseli';
  37.  
  38. if(!$aErrors[1] && $bImage === true)
  39. {
  40. try
  41. {
  42. $sName = md5(sha1(microtime())) . PHOTO_EXTENSION;
  43.  
  44. // clone object
  45. //$oImage1 = $oImage; // full
  46. //$oImage2 = $oImage; // thumb
  47.  
  48. $oImage1->imageResize(PHOTO_F_MAX_X, PHOTO_F_MAX_Y, false);
  49. $oImage2->imageResize(PHOTO_T_MAX_X, PHOTO_T_MAX_Y, true, array(255,255,255));
  50.  
  51. //$oImage3 = new Vimage(PHOTO_TEXT_IMG);
  52. //$oImage1->insertImage($oImage3->Handler(), 4, 75);
  53. //$oImage1->insertTextTTF(sprintf(PHOTO_TEXT, $oUser->name), $oImage1->getColor(255,255,255), PHOTO_TEXT_FONT, PHOTO_TEXT_SIZE, 70, 17);
  54.  
  55. $oImage1->save(PHOTO_F_PATH . $sName, 70);
  56. $oImage2->save(PHOTO_T_PATH . $sName);
  57. }
  58. catch(VimageException $oException)
  59. {
  60. $aErrors[1] = 'Błąd podczas przetwarzania pliku: '.$oException->getMessage().'. spróbuj jeszcze raz.';
  61. $bImage = false;
  62. }
  63.  
  64. if($bImage === true)
  65. {
  66. $oModelFoto->setPhoto($oUser->id, $sName, $oInput->post('desc'));
  67. $oView->aDataPhotos = $oModelFoto->getUserPhotos($oUser->id);
  68.  
  69. try
  70. {
  71. $this->getApplet('free_pro', 'add', array('user' => $oUser->id, 'owner' => $oUser->hasGroup('pro')));
  72. }
  73. catch(VcontrollerException $oException)
  74. {
  75. $oView->bPro = ($oException->getMessage() == '1') ? true : false;
  76. }
  77.  
  78. $_POST['desc'] = '';
  79. }
  80. }
  81. }
  82. ?>
Ramzess
dzieki, proboje to rozgryzc, powiedz do ktorej zmiennej mam przekazac sciezke pliku ? bo nie widze zeby sie z tego skryptu dalo tez uploadowac, maczo w php nie jestem jak widac ;/

Kod
<?php
$submit = $_POST['submit'];
define("CATALOG","foty"); //definowanie katalogu dla plikow
define("NUM_FILE","2"); //wyswietli  6 pol do zaladowania plikow
if(!isset($submit))
{
                echo('<form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data" class="form" id="upload">'."\n");
    echo('<fieldset><legend>Wyślij nowe pliki na serwer</legend>'."\n");
    for($i=0;$i<NUM_FILE;++$i)
    {
        echo('<label class="file"><span>Plik nr. '.($i+1).': </span> <input name="foto[]" type="file" /></label>'."\n");
    }
    echo('<label class="submit"><span>&nbsp;</span><input type="submit" value="Dodaj" name="submit" /></label>'."\n");
    echo('</fieldset>'."\n");
    echo('</form>'."\n"."\n");
}

for($i=0;$i<NUM_FILE;++$i)
{
    $plik_tmp = $_FILES['foto']['tmp_name'][$i];
     $plik_nazwa = $_FILES['foto']['name'][$i];
    if(is_uploaded_file($plik_tmp))
    {
        $dozwolone = array('jpg','jpeg');//rozszerzenia dozwolonych plikow
        $ext = strtolower(substr($plik_nazwa, 0, strrpos($plik_nazwa, '.')));
        if(in_array($ext,$dozwolone))
        {
            $nazwa_losowa = rand(123456789,987654321).'.'.$ext;
            $folder = CATALOG.'/'.$nazwa_losowa;
            move_uploaded_file($plik_tmp,$folder);
             echo '<p>Plik: <strong>'.$nazwa_losowa.'</strong> zostal przeslany na serwer! <a href="'.$_SERVER['REQUEST_URI'].'">Powrót</a></p>'."\n";
        }
        else echo('<p>Nie możesz wgrać tego pliku na serwer. <a href="'.$_SERVER['REQUEST_URI'].'">Powrót</a>.</p>'."\n");
            }
}
?>



mam cos takiego, ale wywala mi blad ze nie moge wgrac pliku na serwer.

serwer ma ustawione upload_files na on

co robie zle ?
Athlan
Linie 19 - 23 odpowiadają za przechwycenie ścieżki (ewentualnie adresu URL) do pliku - dajesz je w konstruktor:
  1. <?php
  2. try
  3. {
  4. $oImage1 = new Vimage($oFile->temp);
  5. $oImage2 = new Vimage($oFile->temp);
  6. }
  7. ?>

Blok try sprawdza czy plik został odpowiednio załadowany, jeżeli nie, wyrzuca wyjątek z odpowiednim komunikatem.
Ramzess
a ten drugi skrypt ? ktory zapostowalem ?
deirathe
Ja Ci proponuję tą klasę, a użycie proste:
  1. <?php
  2. $plik = $_FILES['mojplik'];
  3. $thumb = new Thumbnail($plik['tmp_name']);
  4.  
  5. $thumb->save('path/to/'.$plik['name']);
  6. $thumb->resize(120,90);
  7. $thumb->save('path/to/m_'.$plik['name']);
  8. ?>

TU masz jeszcze inne przyklady uzycia
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.