Autor Zpráva
krteczek
Profil
dobrý den, potrebuji nahrát soubor na server, mám 2 ruzne skripty, ktrere jdou na to použit. jeden je:
soubor index.php

<html>
<head>
<title>PHP script ze - www.jaknaweb.com</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<form method="post" action="upload.php" enctype="multipart/form-data">
<input name="userfile[]" type="file"><br>
<input type="submit" value="Upload!!!" >
</form>
</body>
</html>

soubor upload.php
<html>

<head>
<title>PHP script ze - www.jaknaweb.com</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<?php
for($i=0;$i<sizeof($userfile);$i++)
{
if(!$userfile_size[$i])
{
continue;
}
$UPLOAD = fopen( $userfile[$i], "r" );
$contents = fread( $UPLOAD,$userfile_size[$i]);
fclose( $UPLOAD );
$SAVEFILE = fopen("upload/".$userfile_name[$i], "wb" );
if(fwrite( $SAVEFILE, $contents,$userfile_size[$i] ))
{
echo "soubor se podařilo zapsat";
}
else
{
echo "soubor se nepovedlo nahrát na server";
}
fclose( $SAVEFILE );
}
?>
<a href="index.html">zpátky</a>
</body>
</html

a druhy je index.php ( jiny skript a jiný zpusob )

<html>
<head><title>Upload</title></head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<body>

<?php
$budemezobrazovat=true;
if (($akce == "Upload") and ($_POST!=""))
{
if (($soubor_type == "image/jpg") or ($soubor_type=="image/png") or ($soubor_type=="image/gif"))
{
if ($soubor_size < 100000)
{
if (copy ($soubor, "$soubor_name"))
{
echo "Obrázek $soubor_name o velikosti $soubor_size bajtů byl úspěšně nahrán na server<BR>";
$budemezobrazovat=false;
}
else
{
echo "<p class=\"varovani\">Lituji, ale obrázek $soubor_name se nepodařilo nahrát na server.</p>";

}
}
else
{
echo "<p class=\"varovani\">Lituji, ale obrázek je příliš velký, proto nemůže být nahrán na server.</p>";

}
}
else
{
echo "<p class=\"varovani\">Lituji, ale typ souboru neodpovídá povoleným typům. Nahrát lze jen obrázky *.gif, *.jpg nebo *.png.";
}
}

if($budemezobrazovat)
{
?>

<hr SIZE="1" NOSHADE>

Zadejte jmeno souboru:
<form ACTION="index.php" METHOD="post" ENCTYPE="multipart/form-data">
<input TYPE="file" NAME="soubor" SIZE="30">
<input TYPE="submit" NAME="akce" VALUE="Upload">
</form>
<?php
}
?>
</body>
</html>

oba tyto skripty takhle jak jsou funguji ( mluvim o mem lokalním stroji ) ale v momentě když vyberu skript a vložim ho do stránky jako includovaný, upravený aby běhal v redakčním systemu tak to nefunguje :(

<?php
$budemezobrazovat=true;
if (($akce == "Upload") and ($_POST!=""))
{
if (($soubor_type == "image/jpg") or ($soubor_type=="image/png") or ($soubor_type=="image/gif"))
{
if ($soubor_size < 100000)
{
if (copy ($soubor, "$soubor_name"))
{
echo "Obrázek $soubor_name o velikosti $soubor_size bajtů byl úspěšně nahrán na server<BR>";
$budemezobrazovat=false;
}
else
{
echo "<p class=\"varovani\">Lituji, ale obrázek $soubor_name se nepodařilo nahrát na server.</p>";

}
}
else
{
echo "<p class=\"varovani\">Lituji, ale obrázek je příliš velký, proto nemůže být nahrán na server.</p>";

}
}
else
{
echo "<p class=\"varovani\">Lituji, ale typ souboru neodpovídá povoleným typům. Nahrát lze jen obrázky *.gif, *.jpg nebo *.png.";
}
}

if($budemezobrazovat)
{
?>

<hr SIZE="1" NOSHADE>

Zadejte jmeno souboru:
<form ACTION="adminovo.php?nahrej-obrazky-na-server" METHOD="post" ENCTYPE="multipart/form-data">
<input TYPE="file" NAME="soubor" SIZE="30">
<input TYPE="submit" NAME="akce" VALUE="Upload">
</form>
<?php
}
?>

nevíte někdo proč? a nebo znáte funkční řešení? diky
krteczek
roberta
Profil
a akú chybu vypisuje? pravdepodobne to má niečo spoločné s nastaveniami práv na zápis do adresárov
krteczek
Profil
pravě že to žádnou chybu nvypíše :( jen se mi znovu zobrazí formulář
Fox
Profil
no nevim tak mně napadá...
nemaš špatně nastavený cíl formuláře?
ale tim to asi nebu že?
krteczek
Profil
no asi vím... $_POST je prázdný a nevím proč :(
Kráťa
Profil
Já se takto nedávno "vyblbnul" kvůli proxy. Nejdříve jsem na web dal špatný soubor, pak to opravil, načež mi to doma fungovalo, na webu ne, jelikox proxy mi furt ukazoval tu neopravenou verzi. :-)
http
Profil
krteczek

tady mas naprosto funkcni skript...

<?
// tohle si musis upravit start
if ($pix == "1")
{
$defpath="../upload/obr";
}

if ($txt == "1")
{
$defpath="../upload/txt";
}
// tohle si musis upravit end




$warsize=20000;
$maxsize=100000;
$ok=1;


if($soubor)
{


$file_name = $soubor_name;
$s=$defpath.$path."/".$file_name;

// echo $s;

if($soubor_size > $maxsize)
{
echo "<font color=red>Error:</font> Soubor <b>$file_name</b> ma velikost vetsi nez maximalne dovolenou ($maxsize bytu),<b>NEBYL</b> nahran<br>";
$ok=0;

}else if ($soubor_size > $warsize)
echo"<font color=red>Varovani:</font> Soubor <b>$file_name</b> ma velikost vetsi nez doporucenou ($warsize bytu), BYL nahran";
clearstatcache();


if($ok && file_exists($s))
{
echo"<font color=red>Soubor <b>$soubor_name</b> jiz Existoval, stary byl PōEMAZŃN novżm!</font><br>";
$ok=0;

}

if ($ok)
{
if(!(copy($soubor,$s)))
echo"<font color=red>System error</font> nemohu zkopirovat $soubor do $s<br>, sorry";

else {
chmod($s,0644);
echo "Soubor <b>$file_name</b> uspesne nahran";


}
}
}
?>
krteczek
Profil
Tak jsem našel funkční a dobrý způsob nahrávání obrázků na server

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>

<head>
<title>Odeslání obrázků na server</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>
<?php
$budemezobrazovat=true;

if (isset($_FILES['fupload']))

{

print "název: ". $_FILES['fupload']['name'] ."<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>";

if (($_FILES['fupload']['type'] == "image/pjpeg") or ($_FILES['fupload']['type'] == "image/png") or ($_FILES['fupload']['type'] == "image/gif"))

{
echo "jsem tu";
$nazev_souboru = $_FILES['fupload']['tmp_name'];
$cil = "obrazky/".$_FILES['fupload']['name'];
move_uploaded_file($nazev_souboru, $cil)
or die ("Přenesený soubor nelze zkopírovat");
$size = getImageSize($cil);
$html_img_str = "<p><img width=\"$size[0]\" height=\"$size[1]\" ";
$html_img_str .= "src=\"$cil\" alt=\"přenesený obrázek\"></p>";
print $html_img_str;
$budemezobrazovat=false;
echo '<br> <a href="index.php">nahrát další soubor</a>';
}
else
{
echo "Soubor není v požadovaném formátu. Povolené jsou obrázky ve formátu *.png, *.jpg, *.gif ";
}
}
if($budemezobrazovat)
{
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="256000">
<input type="file" name="fupload" style="width: 500px;"><br>
<input type="submit" value="Odeslat soubor">
</p>
</form>
<?php
}
?>
</body>

</html>

snad je to bez chyb...
krteczek
thomas.tracy
Profil *
Dejte si pozor na proměnnou $_FILES['file']['type']. Vyplňuje ji totiž prohlížeč a ne php, jak by se mohlo zdát.
Např. pro JPEG je správný MIME-typ image/jpeg (nikoliv image/jpg), Internet Explorer však posílá image/pjpeg.
Toto téma je uzamčeno. Odpověď nelze zaslat.