Alla on kuvien uppimiseen tarkoitettu skripti. Move_uploaded_file ei jostain syystä siirrä kuvatiedostoa uuteen kansioon.
Uppiminen siis onnistuu, mutta tiedosto ei koskaan siirry oikeaan kansioonsa. Permissiot ovat oikein sekä lähettävässä- että kohde-kansiossa. Mikä tässä mättää?
//Maximi koko tähän. Esim. 350000 = 350kb.
$max_koko = 350000;
$nimi = $_POST['nimi'];
$linkki = $_POST['linkki'];
//Tarkastetaan päätteet ja tiedoston lähetys
if(isset($_POST["lahetys"]))
{
if((!empty($_FILES["uploaded_file"])) && ($_FILES["uploaded_file"]['error'] == 0))
{
//Tarkastetaan kuva (koko ja pääte)
$filename = basename($_FILES['uploaded_file']['name']);
//Haetaan pääte
$ext = substr($filename, strrpos($filename, '.') 1);
//Tarkastetaan mime-tyyppi
if (($ext == "jpg" || $ext == "jpeg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && ($_FILES["uploaded_file"]["size"] < $max_koko) || ($ext == "gif") && ($_FILES["uploaded_file"]["type"] == "image/gif") && ($_FILES["uploaded_file"]["size"] < $max_koko) || ($ext == "png") && ($_FILES["uploaded_file"]["type"] == "image/png") && ($_FILES["uploaded_file"]["size"] < $max_koko))
{
//Valitaan paikka johon tiedosto tallennetaan
$newname = realpath("../kuva/uusi_").$filename;
//$newname = dirname(__FILE__).'../kuva/'.$filename;
//Tarkastetaan, onko tiedosto jo serverillä
if (!file_exists($newname))
{
if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname)))
{
$sql_lauseke = "insert into kuva(nimi,linkki, tiedostonimi) values ('$nimi','$linkki', 'uusi_$filename')";
if(!$kysely = mysql_query($sql_lauseke))
{
print "Haku epäonnistui. Virhe:".mysql_error();
}
else
{
print "Lähetys onnistui!";
}
}
else
{
print "Virhe: Lähetyksen aikana tapahtui virhe!";
}
}
else
{
print "Virhe: Tiedosto ".$_FILES["uploaded_file"]["name"]." on jo olemassa.";
}
}
else
{
print "Virhe: Vain .jpg, .png ja .gif -päätteiset tiedostot kelpaavat. Max. koko on 350kb. ";
}
}
else
{
print "Virhe: Tiedostoa ei lähetetty!";
}
}
move_uploaded_file ei toimi palvelimella
2
299
Vastaukset
- On!!
Oudointa on, ettei php anna minkäänlaista ilmoitusta tiedonsiirron epäonnistumisesta, vaikka lisäisinkin skriptiin .mysql_error(); ......
- juhakorkeapudas
Ainakin tiedoston polussa näyttäisi olevan vikaa koska käytät siinä realpath-funktiota, joka poistaa relatiiviset viittaukset.
"Oudointa on, ettei php anna minkäänlaista ilmoitusta tiedonsiirron epäonnistumisesta, vaikka lisäisinkin skriptiin .mysql_error()"
- Funktio [move_uploaded_file] palauttaa joko true tai false sen mukaan, onnistuiko tiedoston siirto vai ei. mysql_error - funktiolla ei ole mitään tekemistä tämän asian kanssa.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Naiset miltä kiihottuminen teissä tuntuu
Kun miehellä tulee seisokki ja ja sellainen kihmelöinti sinne niin mitä naisessa köy? :)1169373- 462770
- 1552529
- 222039
Miksi kohtelit minua kuin tyhmää koiraa?
Rakastin sinua mutta kohtelit huonosti. Tuntuu ala-arvoiselta. Miksi kuvittelin että joku kohtelisi minua reilusti. Hais141776- 121578
Kyllä poisto toimii
Esitin illan suussa kysymyksen, joka koska palstalla riehuvaa häirikköä ja tiedustelin, eikö sitä saa julistettua pannaa151527"Joka miekkaan tarttuu, se siihen hukkuu"..
"Joka miekkaan tarttuu, se siihen hukkuu".. Näin puhui jo aikoinaan Jeesus, kun yksi hänen opetuslapsistaan löi miekalla111474- 81366
- 141326