Autor Zpráva
pls
Profil *
mám problém s uložením souborů:

if (copy($soubor, "/soubory")) {
$zkopirovano = 1;
} else {
$zkopirovano = 0;
}
unlink($soubor);

chtěl bych aby se soubor uložil do adresáře soubory, vstap na první stránce:

<form name="zpracuj" methot=post action="dalsistranka.php" enctype="multipart/form-data">
<div>
<p>
Cesta k souboru:<br>
<input name="soubor" type="file">
</p>
<input value="uloz" type="submit">
</div>
</form>
pls
Profil *
prosím nevý někdo?
23k
Profil
methot=post action ???
Tech chyb tam mas vic ... jestli je tohle cely skript
Wertrik
Profil *
Tak místo funkce copy(); se používá move_uploaded_file(); - radši se podívej na www.php.net.
Potom taky zálezí na jakém servru to máš, pokud jim tam beži safe_mode (teba psisco.com to má na servrech) tak musíš psát :
/httpd/html/adresa_tveho_webu(priklad "seznamcz")/www/soubory/$soubor

a celý kod by byl takový :



$root = $_SERVER['DOCUMENT_ROOT']; // to je to /httpd/html/adresa_tveho_webu(priklad "seznamcz")/www/
$uploaded_file = "$root/soubory/$soubor";

if (move_uploaded_file($_FILES['soubor']['tmp_name'], $uploaded_file)) {
$zkopirovano = 1;
} else {
$zkopirovano = 0;
}



pokud to máš na webzdarma(třeba) tak stačí :



if(move_uploaded_file($soubor, "soubory/$soubor")) {
$zkopirovano = 1;
} else {
$zkopirovano = 0;
}




a formular :

pokud to máš na webzdarma(třeba) tak stačí :




<form name="zpracuj" method="post" action="dalsistranka.php" enctype="multipart/form-data">
<div>
<p>
Cesta k souboru:<br>
<input name="soubor" type="file">
</p>
<input value="uloz" type="submit">
</div>
</form>



ten unlink tam snad ani byt nemusi..

A samozřejmě musíš mit nastavena práva pro adresář "soubory" na 0777 (prostě aby tam molh nahrávat) to udelaš třeba v wincommandru.
A pokud by ti to psalo ze soubor byl nahrán a on tam nebyl (když se budes dívat přes FTP) tak dej ctrl+r
a pokud ani potom by tam nebyl tak hned po nahrati souboru na server si nastav práva treba na 0666 u souboru viz prikaz chmod();

Doufám že jsem ti pomohl, protože já jsem s tím měl velké problémy a na psiscu ani nemluvim...
pls
Profil *
jo díky
pls
Profil *
tak sem to zkoušel, stejně to háže chybu:

Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 50532 is not allowed to access /usr/local/apache2/htdocs owned by uid 0 in


jo je to na pipni.cz se SAFE Modem, práva sem nastavené měl
llook
Profil
Se safe-modem se musí vlastník toho skriptu (=UID) shodovat s vlastníkem toho adresáře. Soubor vlastní uživatel číslo 50532, zatímco /usr/local/apache2/htdocs vlastní root, resp. uživatel 0.
Leo
Profil
"Se safe-modem se musí vlastník toho skriptu (=UID) shodovat s vlastníkem toho adresáře. Soubor vlastní uživatel číslo 50532, zatímco /usr/local/apache2/htdocs vlastní root, resp. uživatel 0."

A reseni? Jak to zajistit? Leo
llook
Profil
Myslím, že stačí, když adresář, ve kterém pak ty soubory vytváříme, vytvoříme přes FTP - takový adresář by měl mít stejné UID jako ten skript.
krteczek
Profil
já používám tento skriptík na upload obrázků, ale nemám to vyskoušené na safe mode :(

<?php
//nulování proměnných
$budemezobrazovat=true;
$zprava="";
$alter="";
$poradi="";
$nazev_souboru="";
$size="";
//předání proměnných z POSTu
if(!empty($_POST['alt']))
{
$alter=$_POST['alt'];
}
if(!empty($_FILES['fupload']['name']))
{
$nazev_souboru=$_FILES['fupload']['name'] ;
}

//******************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** *******************************
//******************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** ***********************
//***************** kontrola, jestli je už odesláno ********************************************************************** ********
if (!empty($_POST["alt"]))
{echo "1\n";
if (!empty($_FILES['fupload']['name']))
{echo "2\n";
if(($_FILES['fupload']['error']==0) or (($_FILES['fupload']['size'])>=300000))
{echo "3\n";
//pokud je typ souboru správný pokračujeme v převodu
if (($_FILES['fupload']['type'] == "image/pjpeg") or ($_FILES['fupload']['type'] == "image/jpeg") or ($_FILES['fupload']['type'] == "image/png") or ($_FILES['fupload']['type'] == "image/gif"))
{
//vše je v pořádku nahráno a předáno a bez chyb a je to povolený typ souboru
//vypíšeme co a jak a kde je uloženo
echo '<h2>informace o nahraném obrázku</h2>';
echo 'ALTernativní text k obrázku: '.$alter ."<br>\n";
print "název: ". $nazev_souboru ."<br />";
print "velikost: ". $_FILES['fupload']['size'] ." bajtů<br />";
print "dočasné umístění: ".$_FILES['fupload']['tmp_name'] ."<br />";
print "typ: ". $_FILES['fupload']['type'] ."<br />";
print "chyba: ". $_FILES['fupload']['error'] ."<br />";

//pokus o zápis do databáze
if(mysql_query("insert into obrazky ( alt, nazev) values ('$alter','$nazev_souboru' )",$GLOBALS["link"]))
{
//získáme číslo řádku se zápisem, které použijeme jako název souboru ( před koncovkou )
$posledni_id=mysql_insert_id();
//předáme proměnné jako je název souboru ( v tempu ) a část cesty
$nazev_souboru = $_FILES['fupload']['tmp_name'];
$nazev_obrazku="";
//podle typu souboru určíme jeho jméno
if($_FILES['fupload']['type']=="image/jpeg")
{
$nazev_obrazku.=$posledni_id.'.jpg';
}
if($_FILES['fupload']['type']=="image/png")
{
$nazev_obrazku.=$posledni_id.'.png';
}
if($_FILES['fupload']['type']=="image/gif")
{
$nazev_obrazku.=$posledni_id.'.gif';
}
if($_FILES['fupload']['type']=="image/pjpeg")
{
$nazev_obrazku.=$posledni_id.'.jpg';
}

$cil = "obrazky/".$_FILES['fupload']['name'];
//přesuneme soubor z dočasného adresáře do konečného
if(move_uploaded_file($nazev_souboru, $cil))
{
if(rename($cil, "obrazky/".$nazev_obrazku))
{
echo 'Obrázek byl nahrán na server, jeho název je: '.$nazev_obrazku ;
$nahrano="ano";
if(vytvornahled($nazev_obrazku,$posledni_id))
{
echo "povedlo se vytvořit náhled obrázku";
}
else
{
echo "nepovedlo se vytvořit náhled obrázku";
}
if(mysql_query("update obrazky set nazev='$nazev_obrazku' where id='$posledni_id'",$GLOBALS["link"]))
{
echo 'povedlo se přejmenovat na: '.$nazev_obrazku;
}
else
{
echo "chyba: ".error();
}
}
else
{
echo error();
}
}
else
{
echo 'Soubor nelze zkopírovat na server';
$nahrano="ne";
}
$obr="obrazky/".$nazev_obrazku;
$size = getImageSize($obr);
$html_img_str = "<p><img $size[3] ";
$html_img_str .= 'src="obrazky/'.$nazev_obrazku.'" alt="přenesený obrázek" ></p>';
print $html_img_str;
$budemezobrazovat=false;
}
else
{
echo mysql_error();
}
}
elseif (($_FILES['fupload']['type'] != "image/pjpeg") and ($_FILES['fupload']['type'] != "image/jpeg") and ($_FILES['fupload']['type'] != "image/png") and ($_FILES['fupload']['type'] != "image/gif"))
{
echo 'nepovolený typ souboru';
}
}
else
{
echo 'je mi líto, ale soubor k nahrání je příliš velký';
}
}
else
{
$zprava.='Zatrhli jste políčko nahrát obrázek na server, ale žáden obrázek jste k nahrání nevybrali. <br>';
}
}
if($budemezobrazovat)
{
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'].'?clanek=nahrej-obrazky-na-server';?>" method="post">
<p>
Text, jenž popisuje co je na obrázku ( maximálně 30 znaků včetne mezer ): <br>
<input type="text" name="alt" size="30" maxlength="30"><br>
Kliknutím na tlačítko se vám zobrazí okno s možností výběru obrázku který chcete nahrát na stránky:
<input type="hidden" name="MAX_FILE_SIZE" value="300000">
<input type="file" name="fupload" style="width: 500px;"><br>
<input type="submit" value="Odeslat soubor">
</p>
</form>
<?php
}


krteczek
Leo
Profil
"Myslím, že stačí, když adresář, ve kterém pak ty soubory vytváříme, vytvoříme přes FTP - takový adresář by měl mít stejné UID jako ten skript."

Spravu souboru a prava a vlastniky na unixu jsem nikdy nepochopil, a pokud vim, tak to ani nikdo nikde na webu poradne nevysvetlil. Asi uz starnu a bunky odumiraji... Leo
Wertrik
Profil *
na pipni(freehosting) mi v pohodě jede


if (move_uploaded_file($soubor, "soubory")) {
.....
} else {
....
}


adresar mam vytvoreni pres ftp a prava na 0777
pls
Profil *
no mam to prave taky na pipni, vytvoril jsem teda slozku pres ftp a hlasi to:

Warning: move_uploaded_file(soubory) [function.move-uploaded-file]: failed to open stream: Is a directory in
XY
Profil *
jsem bezradný
krteczek
Profil
skus ten adresar dat do prime podslozky toho skriptu
scrip.php/adresar-pro-ulozeni-s-pravy-zapisu/ukladany-soubor
krteczek
Anonymní
Profil *
[pre][/pre][img][/img]Text odkazu[b][/b][i][/i]
Milos
Profil
To: Krteczek - co znamena v tom scriptu $GLOBALS["link"]???
Díky.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0