Autor Zpráva
lopik007
Profil
Zdravím dnes večer jsem si vytvořil script pro upload fotografii. Upload proběhne, ale nezobrazí se obrázek. Nevíte čím to může být? Chmod složky pictures jsem nastavil na 777.

Zde vypíšu scripty které jsem použil:

Script pro upload:
<form action="inc/foto.w.php?login=<?php echo $_GET["login"];?>" method="post" enctype="multipart/form-data">
<tr>
<td>Vyberte obrázek ze svého pc.</td><td><input type="file" name="soubor" /></td></tr>
<tr><td></td><td><input type="submit" value="Uložit obrázek" /></td></tr>
</form>
<?php
if ($_GET['odeslat'] == 1 ) {
//kontrola odeslání
$adresar = $_SERVER['DOCUMENT_ROOT'] . "images/pictures/"; //nastavení adresáře pro upload fotek, ted se uploadují fotky do adresare "fotky" v rootu webu

$obrazek = $adresar . $_FILES['soubor']['name']; //relativni cesta k uploadovanému obrázku
if (move_uploaded_file($_FILES['soubor']['tmp_name'], $obrazek)) {
	list($sirka, $vyska, $typ, $atributy) = getimagesize($obrazek);

//načtení atributů obrázku, nás zajímá momentálně jen typ, to ostatní už podle jmen proměnných můžete využít sami, např. k zobrazení rozlišení obrázku
	switch ($typ) {
		case 1:
		$pripona = " .gif";
		break;
		case 2:
		$pripona = ".GIF";
		break;
		case 3:
		$pripona = ".JPEG";
		break;
		case 4:
		$pripona = " .jpg";
		break;
		case 5:
		$pripona = ".JPG";
		break;
		case 6:
		$pripona = " .png";
		break;
		default:
			echo "Lze uploadovat pouze soubor typu JPG, GIF, JPEG a PNG.";
		}
	}
}
?>


Script pro výpis ze složky, kam je obrázek nauploadován:
<?php $adresar = OpenDir("./images/pictures/"); while ($soubor = ReadDir($adresar)) { if ($soubor != "." and $soubor != "..") {
echo "<a href='images/pictures/$soubor' onclick='return hs.expand (this)'' class='highslide'><img src='./images/pictures/$soubor' alt='Obrázek' title='Obrázky Resaurace' width='125' height='105'> ";
}
}
?>
mckay
Profil
lopik007:
Doporučuji zobrazit si zdroják a podívat se, jaká cesta k souboru je v atributu src u obrázku. To bude mluvit pravděpodobně za vše.
lopik007
Profil
mckay:
Pán chytrý, tebe jsem dlouho neviděl, jak jinak zobrazovat obrázky než pomoci src?
Vždyť je tomu tak i u HTML
<img src>
mckay
Profil
lopik007:
tebe jsem dlouho neviděl
Však já tebe také ne, a upřímně, ani toho nelituji.

jak jinak zobrazovat obrázky než pomoci src?
Nutím ti snad aby jsi zobrazoval obrázky pomocí něčeho jiného nez src? Pouze ti radím, aby sis zkontrolovat cestu v src, aby jsi věděl, jestli náhodou není chyba právě v cestě.

A nakonec jsem asi našel tvůj problém - plave ti tam jeden apostrof navíc.
<?php $adresar = OpenDir("./images/pictures/"); while ($soubor = ReadDir($adresar)) { if ($soubor != "." and $soubor != "..") {
echo "<a href='images/pictures/$soubor' onclick='return hs.expand (this)' class='highslide'><img src='./images/pictures/$soubor' alt='Obrázek' title='Obrázky Resaurace' width='125' height='105'> ";
}
}
?>

Ve zvýrazněném místě jsem jeden umazal. Překvapuje mě, že ti to highlingter syntaxe ve tvém zajisté vysoce profesionálním IDE neprozradil? Jo počkat, že ty používáš poznámkový blok?

Edit - k tvému editu.
Vždyť je tomu tak i u HTML
<img src>

A o čem se teď asi bavíme? Samozřejmě, že tomu tak je u HTML, nebo ty snad kóduješ stránky v nějakém speciálním lopikovském jazyce?
panther
Profil
lopik007:
Vždyť je tomu tak i u HTML
ne i u HTML, ty tam nic jiného než HTML nemáš (tvůj kus PHP generuje prosté HTML).

mckay to myslí dobře, podívej se, jaká cesta se ti vygenerovala, tedy jestli je chyba v nenaplněné proměnné soubor nebo v cestě k obrázku.
lopik007
Profil
mckay:
Jsem se sekl no, to se občas stává, i těm lepším, ale to je tou přepracovaností.

Tak či tak, tohle řešení nefunguje, i po odstranění apostrofu se na uploadovaný obrázek nezobrazí mezi ostatními fotografiemi. Kde může být ještě chyba?

panther:
Jenže jak mám zkontrolovat cestu obrázku, když se ani ten obrázek neobjeví mezi ostatními obrázky? A neobjeví se ani, takový čtvereček s alternativním popisem
mckay
Profil
lopik007:
Tak jak jsem řekl. Zkontroluj cestu v src - to znamená zobrazit zdroják (CTRL+U), najít část v dokumentu, kde by to mělo být a podívat se.
lopik007
Profil
mckay:

Já opět a znova říkám jak mám zkontrolovat cestu? Obrázky, které už jsou ve složce pictures vloženy, přes FTP ručně, se zobrazuji
mckay
Profil
lopik007:
Čteš moje příspěvky do konce?

"to znamená zobrazit zdroják (CTRL+U), najít část v dokumentu, kde by to mělo být a podívat se."
lopik007
Profil
mckay:

Když si zobrazím zdrojový kód, tak uvidím jen HTML, a ten mi nepomůže, protože jsou u něj cesty zadané správně.
panther
Profil
lopik007:
protože jsou u něj cesty zadané správně.
skutečně? Dej sem odkaz na web.
lopik007
Profil
Skutečně http://www.bartovicanka.cz/foto.php
Tak co s tím může být?
xmark
Profil
lopik007:
1. Co z těch tří obrázků je nahráno ručně a co skriptem?
2. Nemáš pocit, že ty náhledy se tam natahují nějak pomalu? Co až jich tam bude 20 a stránka bude mít 50MB?
3. Nějak neukončuješ tag <a>
4. Opravdu chceš v názvech souborů nechávat mezery a velká písmena?

Hledání chyby by ti šlo líp, kdybys použil trasování. Prostě si kód prolož výpisy něčeho.

$obrazek = $adresar . $_FILES['soubor']['name']; //relativni cesta k uploadovanému obrázku
echo "obrazek:".$obrazek."<br>";
if (move_uploaded_file($_FILES['soubor']['tmp_name'], $obrazek)) {
echo "obrazek nahrán <br>";
    list($sirka, $vyska, $typ, $atributy) = getimagesize($obrazek);


atd.

Jinak u nahrání fotek na ftp (a vyřešení mezer, velkých písmen, vytvoření náhledů) můžeš směle předpokládat, že je to věc, kterou před tebou řešily stovky lidí z tohoto fóra. Opravdu tady nikde není k nalezení funkční skript?
lopik007
Profil
xmark:

1) Jsou nahrány všechny tři ručně, po nahrání, těch tří obrázku, jsem jen použil script pro výpis ze složky.
2) Jo no načítají se pomaleji, ale tuto stránku tvořím pro klienta, který chce zvětšovat obrázky pomoci HS.
3) To vím, je to moje chyba, omylem, nespal jsem celé dva dny.
4) No použil bych názvy nauploadovaných obrázku v title, ale jaksi mi vypadlo za hlavy jak se to dělá.
5) To si přečtěte všichni důrazně nechci žádné hotové řešení. Přišel jsem se jen zeptat na radu.
panther
Profil
lopik007:
1) Jsou nahrány všechny tři ručně, po nahrání, těch tří obrázku, jsem jen použil script pro výpis ze složky.
a kde jsou ty ostatní? Na 99% tipuji, že nejsou na FTP, je to tak? Doposud jsi od [#1] psal opak, a sice, že upload proběhne. Tomu nevěřím. Dej sem přímý odkaz na obrázek, který je v dané složce na FTP a nevypisuje se.

2) Jo no načítají se pomaleji, ale tuto stránku tvořím pro klienta, který chce zvětšovat obrázky pomoci HS.
to s tím nemá nic společného. Nasazení JS galerie a velikost obrázků spolu nesouvisí. Už jsem ti psal výše, že musíš dělat v PHP náhledy obrázků, ne jen zmenšovat rozměry v HTML.

4) No použil bych názvy nauploadovaných obrázku v title, ale jaksi mi vypadlo za hlavy jak se to dělá.
postačí obyčejná echa, která po doladění programu vyházíš.

5) To si přečtěte všichni důrazně nechci žádné hotové řešení. Přišel jsem se jen zeptat na radu.
rad dosáváš celou noc a nejsi schopen dle nich script doladit.
Ofi
Profil
reaguji na lopik007:
sleduj co mi vypsal příkaz:
echo $_SERVER['DOCUMENT_ROOT'];

D:/my_web_apps

už chápeš? LOMÍTKO CHYBÍ :) uprav toto:
$adresar = $_SERVER['DOCUMENT_ROOT'] . "images/pictures/";

takto:
$adresar = $_SERVER['DOCUMENT_ROOT'] .  "/images/pictures/";


další věcí je, že ty nejdřív přesuneš obrázek na jeho místo a pak kontroluješ teprve příponu... rád bych viděl celý kód - co pak děláš s $pripona?

a ještě bych doporučoval toto:
$obrazek = $adresar . $_FILES['soubor']['name'];

změnit na toto (vše na malá písmena, a mezery vyměnit za _, to je úplný minimum...):
$obrazek = $adresar . strtolower(str_replace(" ", "_", $_FILES['soubor']['name']));
lopik007
Profil
Ofi:

$pripona
je tam kvůli typu souboru (formát) obrázku.
Ofi
Profil
reaguji na lopik007:
ano to mi došlo ;) ale proč kontroluješ příponu tak pozdě? nejprve bys měl zkontrolovat příponu a pak teprve obrázek umístit na příslušné místo ne(pokud je to správný typ)? ale pokud se nemýlím tak tvůj skript obrázek nejprve umístí a pak teprve kontroluješ koncovku (takže kdyby někdo nahrával soubor "hack.js", ty ho nejdříve uložís do složky na svém serveru a teprve potom otestuješ jestli to je obrázek)... a mě právě zajímal zbytek kódu, co děláš s proměnnou $pripona?
xmark
Profil
lopik007:
4) No použil bych názvy nauploadovaných obrázku v title, ale jaksi mi vypadlo za hlavy jak se to dělá.

Asi úplně přesně nechápeš, o co jde. Máš nějaký php kód a vidíš že jako celek nefunguje. To co jsem ti napsal, má ten účel, abys zjistil co přesně nefunguje, resp. co přesně se děje. Až to všechno rozchodíš, tak to smažeš. Do title si dej co chceš.
Konkrétně to co jsem napsal, by ti pomohlo odhalit tu chybu, kterou ti popsal Ofi. A hned potom by ses dozvěděl, jestli se úspěšně provedlo move_uploaded_file.
lopik007
Profil
xmark, Ofi:

Tak už vím proč to nejde. Script je správný, ale hosting nepodporuje upload. Takže chyba nebyla u mě

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0