Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuvan lähettäminen ja pienentäminen

AkeMake [10.11.2010 20:28:59]

#

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);
    }
}

Matso [11.11.2010 08:25:58]

#

Suosittelen poistamaan @-merkit koodista, jos yrität selvittää missä on vika. Ne piilottavat mahdolliset virheilmoitukset.

Lebe80 [11.11.2010 09:03:33]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta