Käytän sivuilla Frozenball:n "turvallista ja monipuolista upload koodivinkkiä" ja Tempfile:n "kuvan koon muunninta" yhdessä hiukan muunneltuina.
Yritin lähettää kuvan kansioon ja tämän jälkeen pienentää sen haluttuun kokoon. Sitten oli tarkoitus ottaa kopio lähetetystä kuvasta thumbs -kansioon ja pienentää tämä kopio esikatselukuvaksi. Eli yksinkertaisesti tarkoituksena tehdä tietyn kokoinen kuva ja sille esikatselukuva.
Koodi toimi omalla koneella (MAMP:lla) hyvin ja kaikki meni nappiin, mutta netissä ilmoittikin, että "Kuvan siirto ei onnistunut. Tämä voi johtua mm. siitä, että tällä scriptillä ei ole oikeuksia upload kansioon." No, laitoin kansioille aluksi täydet oikeudet (777), jottei lähettäminen varmasti jäisi ainakaan siitä kiinni. Nyt ei enää tule virhettä vaan näyttäisi siltä, että sivu yrittää aukaista juuri lähetetyn kuvan selaimeen, koska aukeaa vain valkoinen sivu, jossa on sellainen pieni kysymysmerkkikuva (eli tyhjän kuvan merkki?). Lisäksi lähetetty kuva ei tule perille niin kuin pitäisi. Isoa kuvaa ei ilmesty kansioon, mutta esikatselukuva tulee hyvin. Missähän mahtaa olla vika?
// Viedään lähetetty kuva kansioon if (@move_uploaded_file($_FILES['file']['tmp_name'], $conf['kansio'].$tiedoston_nimi)) { $polku = $conf['polku'].$conf['kansio'].$tiedoston_nimi; if ($conf['polku'] != "") $polku = $conf['polku'].$tiedoston_nimi; // Jos kuva on suurempi kuin suurin sallittu, pienennetään se list($width) = getimagesize($polku); if ($width>$conf['imagewidth']) { muunnakoko($polku, $conf['imagewidth']); } $_SESSION[$conf['session']] = $_POST['upload']; } else { msgdie("Kuvan siirto ei onnistunut. Tämä voi johtua mm. siitä, että tällä scriptillä ei ole oikeuksia upload kansioon.",true); } // Tehdään lähetetystä kuvasta kopio toiseen kansioon if (@copy($conf['kansio'].$tiedoston_nimi, $conf['thumbs'].$tiedoston_nimi)) { $thumbpolku = $conf['polku'].$conf['thumbs'].$tiedoston_nimi; if ($conf['polku'] != "") $thumbpolku = $conf['polku'].$tiedoston_nimi; // Jos kuva on suurempi kuin esikatselukuvan kuuluisi olla, pienennetään se list($width) = getimagesize($thumbpolku); if ($width>$conf['thumbwidth']) { muunnakoko($thumbpolku, $conf['thumbwidth']); } msgdie("Kuva on siirretty onnistuneesti."); } else { msgdie("Pikkukuvan siirto ei onnistunut. Tämä voi johtua mm. siitä, että tällä scriptillä ei ole oikeuksia upload kansioon.",true); } }
Suosittelen poistamaan @-merkit koodista, jos yrität selvittää missä on vika. Ne piilottavat mahdolliset virheilmoitukset.
Itse totesin kyseisen luokan hyväksi:
http://phpthumb.sourceforge.net/
Luokalla voi siis luoda kuvista erillisiä thumbnaileja, tai sitten kuten luokan tekijä ehdottaa, näyttää kuvien tilalla phpthumb.php -osoitetta, johon pusketaan urlin mukana parametrit. Luokka osaa itse siivoilla jälkiään ja tallentaa tiedostot välimuistiin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.