Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedoston tallentaminen sivuston palvelimelle

kettu [08.06.2004 15:31:18]

#

Siis mikähän mun koodissa mättää? Pitäisikö määritellä jotain lupia (chmod? tms...) En kyllä ehkä ole päässyt jutun ytimeen tiedoston tallentamisessa, vaikkakin olen tuijottanut koodeja enemmänkin viime aikoina. Olen omassa jutussani kokeillut seuraavaa tunnusten takana olevalla ylläpitopuolella (olen siis lainaillut tuota copy koodia muualta esimerkistä):

<?php
//otetaan yhteys palvelimeen
require "alustus.php";
//luetaan tallennuslomakkeelta tietoja
$kohde = $_POST['kohde'];
$otsikko = $_POST['otsikko'];
$tiedosto = $_POST['tiedosto'];
$kuvaus = ereg_replace("(\r\n|\n|\r)", "<br />", $_POST['kuvaus']);
$paivays = date("j.n.Y G:i");

if($tiedosto !="")
{
copy
//MÄÄRITELLÄÄNKÖ tähän kohde sivustopalvelimella, mihin tiedosto tallentuu??????????($tiedosto, "/home/palvelin/asiakasnumero/html/tiedostot/suomi/uutinen/$tiedosto_name")
         or die("Tiedostoa ei voitu kopioida.");
}
else { die("Tiedostoa ei määritelty.");

// viedään käyttäjän antamat tiedot sql-lauseella tietokantaan, eli lisätään kantaan uusi tietue
$status = mysql_query("insert into uutinen(kohde,otsikko,tiedostonimi,tyyppi,kuvaus,paivays,tallentaja)
values('$kohde','$otsikko','$tiedosto_name','$tiedosto_type','$kuvaus','$paivays','$tallentaja')");
if ($status)
{
echo "<p><b>Asiakirjatietojen tallennus onnistui!</b></p>";
}
else
print "Tallennusvirhe!";

?>

Yleensä ottaen saan seuraavan kaltaisia viestejä:

Warning: copy(...): failed to open stream: No such file or directory in ... on line 4
Could not copy file

Warning: copy(...): failed to open stream: Permission denied in ... on line 4
Could not copy file

Olen huomannut, että monet upload skriptit ovat älyttömän pitkiä ja monimutkaisen tuntuisia. Onko tämä välttämätöntä?

PS. Käytän oikeassa koodissa palvelimen nimeä ja oikeaa asiakasnumeroa.

Teme [08.06.2004 19:04:05]

#

Vedetääs heti alkuun kooditagien väliin toi niin sitä voi ehkä jopa lukea..

<?php
//otetaan yhteys palvelimeen
require "alustus.php";
//luetaan tallennuslomakkeelta tietoja
$kohde = $_POST['kohde'];
$otsikko = $_POST['otsikko'];
$tiedosto = $_POST['tiedosto'];
$kuvaus = ereg_replace("(\r\n|\n|\r)", "<br />", $_POST['kuvaus']);
$paivays = date("j.n.Y G:i");

if($tiedosto !="")
{
copy
//MÄÄRITELLÄÄNKÖ tähän kohde sivustopalvelimella, mihin tiedosto tallentuu??????????($tiedosto, "/home/palvelin/asiakasnumero/html/tiedostot/suomi/uutinen/$tiedosto_name")
or die("Tiedostoa ei voitu kopioida.");
}
else { die("Tiedostoa ei määritelty.");

// viedään käyttäjän antamat tiedot sql-lauseella tietokantaan, eli lisätään kantaan uusi tietue
$status = mysql_query("insert into uutinen(kohde,otsikko,tiedostonimi,tyyppi,kuvaus,paivays,tallentaja)
values('$kohde','$otsikko','$tiedosto_name','$tiedosto_type','$kuvaus','$paivays','$tallentaja')");
if ($status)
{
echo "<p><b>Asiakirjatietojen tallennus onnistui!</b></p>";
}
else
print "Tallennusvirhe!";

?>

Antti Laaksonen [09.06.2004 01:46:52]

#

Upload-skriptien toiminta on toisinaan oikullista. Joka tapauksessa siihen hakemistoon, johon tiedosto kopioidaan, täytyy olla kirjoitusoikeudet. Voit myös kokeilla käyttää copy-funktion sijasta funktiota move_uploaded_file (samat parametrit). Tuon pitkän hakemistopolun toimivuudesta en ole varma, oletko kokeillut lyhyttä muotoa?

Vastaus

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

Tietoa sivustosta