Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: upload.php

Sivun loppuun

Havoc [21.12.2006 20:06:19]

#

Löysin netistä valmiin upload.php scriptin, jonka avulla kuka tahansa voi ladata kuvia palvelimelleni. Sain kaiken säädettyä onnistuneesti kuntoon, mutta myöhemmin huomasin, että jos joku lataa saman nimisen kuvatiedoston jonka kansio jo valmiiksi sisältää, se korvaa sen.

Pystyisikö kukaan auttamaan, että miten tehdä php koodipätkä, joka muuttaisi ladattavan kuvatiedoston nimeä, jos kansio jo sisältää saman nimisen tiedoston?

Tässä vielä linkki josta latasin tuon php filun:

http://www11.uta.fi/~jl/php/esim/code.php?file­=upload.php

Kentti [21.12.2006 20:22:23]

#

Esim. näin:

<?php

  $kuvannimi = "Munkuva";

  $kuvakansio = scandir("sivut/kuvat");

  foreach ($kuvakansio as $nimi) {

      if (strcasecmp($kuvannimi, $nimi) == 0) {

            echo "Samanniminen kuva on jo olemassa. Ole hyvä ja valitse toinen nimi!";
      } else {

            echo "Kuvan nimi on ok.";
      }
  }

?>

tsuriga [21.12.2006 20:25:06]

#

file_exists

Havoc [22.12.2006 18:00:15]

#

Jostain syystä en saa tuota millään toimimaan. Herjaa tämänlaista: "Fatal error: Call to undefined function: scandir() in /home/*******/public_html/upload/index.php on line 13"

Blaze [22.12.2006 18:07:57]

#

Oothan huomannu, että scandir-funktio on mukana vasta PHP5:ssa?

Havoc [22.12.2006 18:15:51]

#

Blaze kirjoitti:

Oothan huomannu, että scandir-funktio on mukana vasta PHP5:ssa?

Hmm, sehän sen selittääkin joo. Palvelimella on käytössä PHP-versio 4.4.4, joten minkä komennon tuon scandir:n tilalle sitten laittaisi?

Blaze [22.12.2006 18:51:34]

#

Siellä scandirin manuaalisivullahan noita on valmiita korvaavia, senkun kopioi.

Antti Laaksonen [22.12.2006 19:00:08]

#

Funktio glob toimii lähes samalla tavalla ja on käytössä PHP:n versiosta 4.3.0 alkaen.

(Vanhemmilla PHP:n versioilla on tarpeen kolmikko opendir, readdir ja closedir.)

Parempi tapa tarkistukseen on kuitenkin tsurigan esittämä file_exists - kaikkia tiedostoja ei toki tarvitse selata läpi, jos vain pitää tarkistaa, onko tietty tiedosto olemassa.

Quirzo [27.12.2006 11:06:36]

#

Ite ratkaisin tämän helpoimmalla tavalla (ehkä).
Jos kuva on olemassa, lisätään kuvan alkuun random luku.

Tämä koodi tosin lisää numeron aina, mutta ei kai sillä mitään väliä ole.

$nimi = $_FILES["file"]["name"];
while(file_exists($kohde.$nimi));
{

	$nimi = rand(100,900).$_FILES["file"]["name"];

}

PS: Katso koodivinkkini https://www.ohjelmointiputka.net/koodivinkit/24979-php-helppo-upload

Havoc [31.12.2006 10:15:09]

#

Quirzo kirjoitti:

Ite ratkaisin tämän helpoimmalla tavalla (ehkä).
Jos kuva on olemassa, lisätään kuvan alkuun random luku.

Tämä koodi tosin lisää numeron aina, mutta ei kai sillä mitään väliä ole.

$nimi = $_FILES["file"]["name"];
while(file_exists($kohde.$nimi));
{

	$nimi = rand(100,900).$_FILES["file"]["name"];

}

PS: Katso koodivinkkini https://www.ohjelmointiputka.net/koodivinkit/24979-php-helppo-upload

Kokeilin tuota, mutta kun yritin ladata kuvaa palvelimelle, se alkoi herjaamaan seuraavaa: "Fatal error: Maximum execution time of 30 seconds exceeded"

Kyseessä on siis tuo " while(file_exists($kohde.$nimi)); ".

Tämä PHP ei taida oikein olla mua varten :D

Quirzo [31.12.2006 10:21:46]

#

Jaa.
Ton tarkoitus on muuttaa nimeä kunnes sitä ei oo olemassa.
Laita vaan näin:

if(file_exists(KUVANKOHDE)){
   $nimi = rand(100,900).$_FILES["file"]["name"];
}

Tietty muutat noi tiednimet sopiviks.

Blaze [31.12.2006 15:17:21]

#

Quirzo kirjoitti:

Ton tarkoitus on muuttaa nimeä kunnes sitä ei oo olemassa.

Näppärämpää vois olla käyttää aikaleimoja tiedostoniminä, kuten esim. 4chan tekee.

Havoc [17.01.2007 23:53:53]

#

Quirzo kirjoitti:

Jaa.
Ton tarkoitus on muuttaa nimeä kunnes sitä ei oo olemassa.
Laita vaan näin:

if(file_exists(KUVANKOHDE)){
   $nimi = rand(100,900).$_FILES["file"]["name"];
}

Tietty muutat noi tiednimet sopiviks.

Tein juuri niin kuin neuvoit, mutta tuo koodipätkä ei tunnu vaikuttavan scriptaan mitenkään, se ei myöskään anna mitään virheilmoitusta. Ehkä olisi parempi vain antaa olla, kun meikän tieto-taidot ei nähtävästi riitä...

Olga [18.01.2007 07:40:43]

#

Miltä nykyinen koodi näyttää?


Sivun alkuun

Vastaus

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

Tietoa sivustosta