Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Upload tökkii

Firsti [14.01.2006 13:43:09]

#

Muokkasin hieman tuota multiuploadiskriptiä mutta se jostain kumman syystä ei pelitä. Se vain refreshhaa sivun eikä anna mitään virheilmotusta eikä mitään eikä tule kuvaakaan serverille.

Koodi on tämännäköinen

<?php

include("../status.php");

if ($kirjautunut == "0") { exit("stfu"); }
else {



ob_start();

define("MAX_COUNT", 1); // määritetään että kuinka monta tiedostoa voidaan kerralla tallentaa serverille
define("UPLOAD_DIRECTORY", "upload/" . $tunnus . "/"); // määritellään tiedostojen uusi koti, eli minne tiedostot upitetaan
define("MAX_SIZE", 655355000); // yksittäisen tiedoston maksimikoko
define("INDEX_PAGE", "upload.php?done=ok"); // määritetään redirect sivu

if(!is_dir(UPLOAD_DIRECTORY)) {
    mkdir(UPLOAD_DIRECTORY, 0777); // jos hakemistoa ei ole olemassa, luodaan sellainen
}

if(file_exists($_FILES['file1']['tmp_name'])) { // tarkistetaan että edes ensimmäinen kuva on tallentunut servulle temp hakemistoon, aloitetaan upitus
    for($i=1; $i<=MAX_COUNT; $i++) {
        $file_type = $_FILES['file'.$i]['type'];
        $type = explode("/", $file_type);
        $type = $type[0];
        if ($type != "image") {
        exit('<meta http-equiv="refresh" content="0;url=upload.php?done=inte">');
        }
        else {

        if($_FILES['file'.$i]['size'] > MAX_SIZE) { echo "Liian iso tiedosto!<br>".MAX_SIZE." on raja"; break; }

        if(file_exists(UPLOAD_DIRECTORY.$_FILES['file'.$i]['name'])) { exit($_FILES['file'.$i]['name']." niminen tiedosto on jo serverillä"); }

$kuva = file("monesko.txt");
$kuva = $kuva[0];
$kuva++;
$tallennus = fopen("monesko.txt", "w");
fwrite($tallennus, $kuva);
fclose($tallennus);
$asdf = explode(".", $_FILES['file'.$i]['name']);
$asdf = $asdf[count($asdf)-1];
$ulos = $kuva . "." . strtolower($asdf);
        move_uploaded_file($_FILES['file'.$i]['tmp_name'], UPLOAD_DIRECTORY.$ulos);

        list($width, $height, $type, $attr) = getimagesize(UPLOAD_DIRECTORY.$ulos);
        if (($width > 1024) || ($height > 1024)) {
                exec("rm " . UPLOAD_DIRECTORY.$ulos);
                echo '<meta http-equiv="refresh" content="0;url=upload.php?done=iso">';
        }
        else {
                echo '<meta http-equiv="refresh" content="0;url=upload.php?done=ok">';
        }
        }

    }
}
?>
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" ENCTYPE="multipart/form-data">
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="102400000">
<?php
for($i=1;$i<=MAX_COUNT;$i++) {
        include("../top.php");
        echo "<h2>Kuvan lisäys</h2><br>";
        include("../sisempi.html");
        if ($_GET['done'] == "ok") { echo '<p class="punainen">Kuva tallennettu!</p>'; }
        if ($_GET['done'] == "inte") { echo '<p class="punainen">Lähettämäsi tiedosto ei ole kuvatiedosto!</p>'; }
        if ($_GET['done'] == "iso") { echo '<p class="punainen">Lähettämäsi kuva on liian suuri! Maksimikoko 1024x1024 px.</p>'; }
        echo "Kuvan tulee olla PNG tai JPG kuva.<br>Koko mieluiten 640x480 jottei GD kauheasti huononna kuvaa.<br><br>";
        echo "<form><input type=\"file\" name=\"file".$i."\" size=\"75\"><br>";
}
?>    <br><input type="submit" value="upload"></form><?php

include("../bottom.php");

ob_end_flush();
exit;



}

include("../bottom.php");
?>

Se siis tosiaan vain "päivittää" sivun :-/

Että jos joku ymmärtäisi mistä moinen johtuu niin olisi mukava jos saisin palautetta.

Toinen juttu että pitääkö "upload/" hakemisto olla chmodattu 777 ja pitääkö sen chownit olla www-data vai se käyttäjä jonka hakemistossa tuo upload.php on ?

kayttaja-2791 [14.01.2006 15:19:28]

#

Huonot sisennykset ja vähäiset virheiden tarkistukset ovat varmaan syy.

Eli jotain tyyliin:

if (mkdir... == false)
  exit("error 1")
...
if (move_uploaded_file... == false)
  exit("error 2")

Vastaus

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

Tietoa sivustosta