Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Uploadi

Sivun loppuun

Olli Vanhoja [30.06.2003 19:50:19]

#

<?php
####################################################################
// Asetukset: 						                      #
$max_file_size = "200"; // maksimi tiedosto koko				      #
$upload_path = "./tiedostot/"; // kansio				                      #
$files = array(".jpg", ".jpe", ".jpeg", ".gif"); // Hyväksyty tiedosto muodot                  #
$loki = "true"; // kirjoitetaanko loki				                      #
$tied = "data.txt"; // kuvaus tiedosto         				      #
####################################################################

// alku
if (isset($_POST['laheta'])) {

$max_size = 1024*$max_file_size;

// banned?
function is_banned ($files, $name) {
    if (is_array($name)) {
    foreach ($files as $file) {}
    if (strstr($file, $name))
        return true;
    else
        return false;
    }
    else
        return false;
}

if (is_banned($files, $_FILES['file']['name'])) {
        echo "Tiedoston on väärää tyyppiä!";
}
    elseif ($_FILES["file"]["size"] == 0) {
        print ("Tiedoston koko on 0kt - Lähetys keskeytetty!");
}
    elseif (file_exists($upload_path.$_FILES['file']['name'])) {
        echo "Tiedosto on jo olemassa - Yritä vaihtaa tiedoston nimeä.";
    print "<br><h2>Tiedosto nimet jotka ovat jo käytössä:</h2>";
// näytetään kaikkiennimet
    $hakemisto = opendir("./tiedostot/");
    while ($tiedosto = readdir($hakemisto)) {
        if ($tiedosto != "." && $tiedosto != "..") {
        echo "- <a href=\"./tiedostot/$tiedosto\">$tiedosto</a><br>";
        }
    }
    closedir($hakemisto);
}
    elseif ($_FILES["file"]["size"] < $max_size) {
        move_uploaded_file($_FILES['file']['tmp_name'], $upload_path.$_FILES['file']['name']); //siiretään tiedosto
        $size_kt = round($_FILES["file"]["size"] / 1024, 0) . " kilotavua";
        print("Tiedosto ".$_FILES["file"]["name"]." on lisätty!<br>");
        print("Tiedoston koko on $size_kt <br>");
        // Kirjoitetaanko loki
        if($loki=="true")
        {
        $tiedot = fopen($tied,"a") or die("Tiedostovirhe - Lokitiedotoa tiedostoa ei voi avata!");
        $mutu = ("Tiedosto:".$_FILES["file"]["name"]." Nimi:"$nimi" Kuvaus:"$kuvaus" Sähköposti:"$posti"\n");
        fwrite($tiedot, $mutu);
        fclose($tiedot);
        }
}
    else {
    print "Liian suuri tiedosto $size_kt, kun maksimi on max_file_size!";
}
    print "<br><a href=\"upload.php\">Takaisin</a>";
}

?>

<br>
<h2>Upload:</h2>
<form enctype="multipart/form-data" action="<?php print $PHP_SELF ?>" method="post">
Valitse kuva:<input type="file" name="file">
Nimi: <input type="text" name="nimi"><br>

Kuvaus: <input type="text" name="kuvaus"><br>

Sähköposti: <input type="text" name="posti"><br>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php print ("$max_size"); ?>">
<input type="submit" name="laheta" value="Lähetä">
</form>

<?php
}
?>

Oon tommosta säätäny jo monta tuntii, mut en oo keksiny miten saan noi submitatut hommat tallennettuu tiedostoon paitsi toi tiedoston nimi? Miten sais toimii?

Teme [01.07.2003 12:20:49]

#

<?php

$path = "/path/to/upload/directory"; 	//Hakemisto, johon tiedostot tallennetaan

if($file){

	if(copy($file, "$path/$file")){

		print("Tiedosto imutettiin palvelimelle onnistuneesti!");
	}else{
		print("VIRHE! Tiedostoa ei saatu imutettua.");
	}

	unlink($file);
}

?>

Tässä oli se imutuspätkä, homma hoitunee mitä ilmeisimmin copy() -käskyllä.

Ja sitten se HTML-sivu olis tän näkönen:

<html>
<head>
<title>Imutus</title>
</head>

<body>
<h3>Tiedoston DEMO-Imutus</h3>
<form name="form" method="post" action="upload.php" enctype="multipart/form-data">
  <p>Tiedosto, joka aiotaan imuttaa:
    <input type="file" name="file">
  </p>
  <p>
    <input type="submit" value="Submit">
  </p>
</form>
</body>
</html>

Veivaa se copy() -käsky siihen omaan skriptiin ni eikös ala pelittämään!?

Olli Vanhoja [01.07.2003 14:09:41]

#

lähinnä kysyinb miten tuon saa toimimaan :-P

$mutu = ("Tiedosto:".$_FILES["file"]["name"]." Nimi:"$nimi" Kuvaus:"$kuvaus" Sähköposti:"$posti"\n");

odys [01.07.2003 14:13:24]

#

Koita vaikka $_POST["nimi"], $_POST["kuvaus"] ja $_POST["posti"]

Jos on register globals off. Mikä on järkevää.. kannattaa opetella koodaamaan skriptinsä niin että ne toimii safe mode TRUE ja register globals FALSE tilassa.

Olli Vanhoja [01.07.2003 14:26:14]

#

Ok, Miks toi globals pitäs olla pois päältä?

odys [01.07.2003 15:34:05]

#

No siihen liittyy tietoturvallisia asioita.. Jos on aloittelija niin sillä voi saada ihmeitä aikaan :)

Ja muutenkin koko register globals ollaan poistamassa PHP:stä, niin mitäs sitten teet kun et osaa kirjoittaa skriptejäsi register globals off tilassa? :)

Noh sitten täytyy vain harjoitella muutama uusi asia..

Olli Vanhoja [01.07.2003 20:52:39]

#

Safe mode on nytkin, mutta register globals TRUE :-S

k-mikko [02.07.2003 10:35:47]

#

Tuo copy() voidaan korvata myös move_upload_file():llä.

move_uploaded_file ( string filename, string destination)

...Ja se register_globals kannattaa pistää pois.

Olli Vanhoja [02.07.2003 12:15:32]

#

Mbnetin ongelma tälä hetkellä, katsotaan sitten uudestaan kun saan oman serverin

Meitsi [08.07.2003 11:51:26]

#

Mulla toi temen vinkki ei toimi:

Warning: copy(http://koti.mbnet.fi/MuN SiVuT/php testit/sisään//tmp/phpZncEo4) [function.copy]: failed to create stream: HTTP wrapper does not support writeable connections. in /mbnet/t/teamos/php testit/up.php on line 7

VIRHE! Tiedostoa ei saatu imutettua.

k-mikko [15.07.2003 05:16:35]

#

Itse puuhasin upload-systeemin sivulleni aikoja sitten ja jouduin "chmodaamaan" upload-kansion 777:ksi, että uploadskripti ei valittaisi.

Onko se viisasta/normaalia/hyväksyttävää?

k-mikko [16.07.2003 01:24:28]

#

Ladattavan tiedoston ehdoton maksimikoko on säädettävissä php:n asetuksista, kohdasta upload_max_filesize.

Oletusasetus on kaksi megatavua.

Lomakepohjainen tiedostokoon rajoittaminen on niin helposti kierrettävissä, että aijai.


Sivun alkuun

Vastaus

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

Tietoa sivustosta