Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: kuvan uplodaus imageshackin tyyliin

mylvari [01.01.2006 22:44:34]

#

olisiko joku nähnyt missään mitään php scriptiä joka uploadaisi kuvatiedostoja niin että siinä on vain kenttä mihin laitettaisiin osoite missä kuva on esim c/kuva.gif vai mitenkä tuo nyt olisi (ja tietysti siinä täytyy olla selaa namiska) ja kun se on sen uploadinu ni ei pakollista mutta vois kertoa kuvan ominaisuuksia esim koko 81kt jne. ja sitten kertoisi suoran osoitteen missä kuva on esim http://www.jokuhosti/jotn.fi/kuva.gif jotta sen voi siitä sittten nopeasti copsata

sooda [01.01.2006 22:51:04]

#

Sitä hakua saa käyttää. Sovella vaikka tätä.

kayttaja-2791 [03.01.2006 13:21:39]

#

Esimerkki Mureawikiin tekemästäni PHP-oppaasta:
http://wiki.mureakuha.com/wiki/PHP-opas#Tiedostojen_l.C3.A4hett.C3.A4minen_.28.24_FILES.29

Laheta.php

<form action="vastaanota.php" method="post" enctype="multipart/form-data">
  <input type="file" name="file" />
  <!--Määritellään maksimikoko tavuina, helposti kierrettävissä mutta ihan käytettävyydenkin kannalta hyvä olla-->
  <input type="hidden" name="MAX_FILE_SIZE" value="1024" />
  <input type="submit" />
</form>

Vastaanota.php

<?php
//Asetukset alkavat
  //Sallittuihin päätteisiin avaimeksi täältä saatu avain halutuille kuvatyypeille:
  // https://www.php.net/manual/fi/function.getimagesize.php
$asetukset['sallitut_päätteet'] = array(1 => "gif", 3 => "png", 2 => "jpg");
$asetukset['kuvan_maxleveys'] = 400;
$asetukset['kuvan_maxkorkeus'] = 300;
$asetukset['kuvan_maxkoko'] = 20; //Kilotavuina
$asetukset['latauskansio'] = './uploads/';
//Asetukset päättyvät

if (!empty($_FILES['file']['name'])) {
  //Tarkistukset alkavat

    //Kuvan päätteen tarkistus alkaa
    //Haetaan viimeisen pisteen jälkeen tulevat merkit, jotka siis määräävät kuvan päätteen
  $kuvan_pääte = substr(strtolower($_FILES['file']['name']), strrpos($_FILES['file']['name'], ".")+1);

  if (in_array($kuvan_pääte, $asetukset['sallitut_päätteet']) === false) {
    $virhe .= "Väärä pääte, sinun oli $kuvan_pääte kun sallitut päätteet ovat ";
    $virhe .= implode(", ", $asetukset['sallitut_päätteet']).".<br />\n";
  }
  //Kuvan päätteen tarkistus päättyy

  //Kuvan koon tarkistus ja validointi alkaa
    //Getimagesize hakee kuvasta erinäisiä tietoja, kuten sen fyysisen koon.
    //Samoin se palauttaa virheen mikäli kuva ei ole kuva laisinkaan
  if ($kuvan_tiedot = getimagesize($_FILES['file']['tmp_name'])) {
    $kuvan_leveys = $kuvan_tiedot[0];
    $kuvan_korkeus = $kuvan_tiedot[1];
    $kuvan_tyyppi = $asetukset['sallitut_päätteet'][$kuvan_tiedot[2]];
    $kuvan_koko = round(filesize($_FILES['file']['tmp_name']) / 1024, 1);

    //Leveyden tarkistus
    if ($kuvan_leveys > $asetukset['kuvan_maxleveys'])
      $virhe .= "Kuva on liian leveä, {$kuvan_leveys} px kun maksimileveys on {$asetukset['kuvan_maxleveys']} px.<br />\n";

    //Korkeuden tarkistus
    if ($kuvan_korkeus > $asetukset['kuvan_maxkorkeus'])
      $virhe .= "Kuva on liian korkea, {$kuvan_leveys} px kun maksimikorkeus on {$asetukset['kuvan_maxkorkeus']} px.<br />\n";

    //Koon tarkistus
    if ($kuvan_koko > $asetukset['kuvan_maxkoko'])
      $virhe .= "Kuva on liian suuri, $kuvan_koko Kt kun maksimikoko on {$asetukset['kuvan_maxkoko']} Kt.<br />\n";

    //Tyypin tarkistus
    if (in_array($kuvan_tyyppi, $asetukset['sallitut_päätteet']) === false)
      $virhe .= "Kuvan tyyppi ei ole tuettu, sallitut päätteet ovat ".implode(", ", $asetukset['sallitut_päätteet']).".<br />\n";

    //Tarkistetaan ettei kuvan nimi ole jo käytössä
    if (is_file($asetukset['latauskansio'].$_FILES['file']['name']))
      $virhe .= "Tällä nimellä on jo tiedosto ladattuna, valitse eri nimi.<br />\n";
  }
  else
    exit('Kuvaa ei tunnistettu kuvaksi.');
  //Kuvan koon tarkistus ja validointi päättyy

  if ($virhe)
    exit($virhe);
  //Tarkistukset päättyvät

  //Kuvan siirtäminen haluttuun paikkaan alkaa
  if (move_uploaded_file($_FILES['file']['tmp_name'], $asetukset['latauskansio'].$_FILES['file']['name']))
    echo "Tiedosto siirretty onnistuneesti. ";
  else {
    //Poistetaan väliaikaistiedosto
    unlink($_FILES['file']['tmp_name']);
    exit("Tiedoston siirtäminen lopulliseen kansioon epäonnistui.");
  }
  //Kuvan siirtäminen haluttuun paikkaan päättyy
}
?>

Vastaus

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

Tietoa sivustosta