ugrás a tartalomhoz

Képfeltöltés után hivatkozás kiírása, kép megjelenítése

Anonymous · 2005. Okt. 15. (Szo), 17.50
upload.php tartalma:
<?php
$imagesonly = false;
$basedir = ".";
$filetypesinf = "filetypes.txt";
$allowfiletyopesonly = true;

// <--- NO USER EDITABLE PARTS BELOW THIS LINE --->
session_start();

if($imagesonly == false AND $allowfiletyopesonly == true)
    {
    $fa = fopen($filetypesinf, 'r');
    while($line = fgets($fa, 1024))
        {
        if(ereg("\n",$line))
            {
            $line = ereg_replace("\n","", $line);
            }
        $filetypes[$line] = $line;
        }
    fclose($fa);
    }

define("STEP1","<html>\n<head>\n<title>Feltöltés</title>\n</head>\n<form action=\"" . 

$_SERVER['php_self'] . "\" method=\"get\">\nHány fájlt szeretnél feltölteni? <input 

type=\"text\" size=\"1\" value=\"5\" name=\"filestoupload\"/>\n<br />\n<input 

type=\"submit\">\n</form>\n</body>\n</html>");
$step2 = "<html>\n<head>\n<title>Feltöltés</title>\n</head>\n<form action=\"" . 

$_SERVER['php_self'] . "\" method=\"post\" enctype=\"multipart/form-data\">\n{FORM}\n<input 

type=\"submit\" name=\"upload\" value=\"Feltöltés\" />\n</form></body>\n</html>";

function map_dirs($path) 
    {
    if(is_dir($path)) 
        {
        if($contents = opendir($path)) 
            {
            while(($node = readdir($contents)) !== false) 
                {
                if($node!="." && $node!="..") 
                    {
                    if(is_dir($path."/".$node) AND is_writable($path . 

"/" . $node))
                        {
                        $_SESSION['path'] .= "<option value=\"" . 

$path . "/" . $node . "\">" . $path . "/" . $node . "</option>\n";
                        map_dirs($path . "/" . $node);
                        }
                    }
                }
            }
        }
    }

$_SESSION['path'] = "";
map_dirs($basedir);

if(Empty($_POST['upload']))
    {
    if(Empty($_GET['filestoupload']))
        {
        die(STEP1);
        }
    else
        {
        $counter = 1;
        for($i=0; $i != $_GET['filestoupload']; $i++)
            {
            $form .= "File " . $counter++ . "\n<br />\n<input type=\"file\" 

name=\"" . $i . "\" /> Helye: <select name=\"place" . $i . "\" size=\"1\">\n" . 

$_SESSION['path'] . "</select>\n<br />\n";
            }
        die(ereg_replace('{FORM}', $form, $step2));
        }
    }
else
    {
    foreach($_FILES as $file)
        {
        if(!empty($file['tmp_name']))
            {
            if($imagesonly == true)
                {
                $size = getimagesize($file['tmp_name']);
                if(!$size)
                    {
                    print $file['name'] . " feltöltése <font 

color=\"ff0000\">sikertelen</font>, mivel az nem kép!\n<br />\n";
                    }
                else
                    {
                    if(@copy($file['tmp_name'], $_POST['place' . 

key($_FILES)] . '/' . $file['name']))
                        {
                        print $file['name'] . " feltöltése <font 

color=\"00ff00\">sikeres</font>\n<br />\n";
                        }
                    else
                        {
                        print $file['name'] . " feltöltése <font 

color=\"ff0000\">sikertelen</font>, mivel belső hiba történt...\n<br />\n";
                        }
                    }
                }
            else
                {
                if($allowfiletyopesonly == false AND 

!empty($filetypes[$file['type']]))
                    {
                    print $file['name'] . " feltöltése <font 

color=\"ff0000\">sikertelen</font>, mivel a file típus nem megengedett...(" . $file['type'] 

. ")\n<br />\n";
                    }
                else
                    {
                    if(!Is_dir($_POST['place' . key($_FILES)]))
                        {
                        print $file['name'] . " feltöltése <font 

color=\"ff0000\">sikertelen</font>, mivel a megadott könyvtár nem létezik...\n<br />\n";
                        }
                    else
                        {
                        if(@copy($file['tmp_name'], $_POST['place' 

. key($_FILES)] . '/' . $file['name']))
                            {
                            print $file['name'] . " feltöltése 

<font color=\"00ff00\">sikeres</font>\n<br />\n";
                            }
                        else
                            {
                            print $file['name'] . " feltöltése 

<font color=\"ff0000\">sikertelen</font>, mivel belső hiba történt...\n<br />\n";
                            }
                        }
                    }
                next($_FILES);
                }
            }
        }
    }
?>
filetypes.txt tartalma:

text/plain
image/gif
application/octet-stream

És ezt szeretném úgy megcsinálni, hogy képfeltöltés után kiírja a kép linkjét, esetleg magát a képet is mutassa, de megelégednék az előzővel is. Előre is nagyon köszönöm...
 
1

<Nincs cím>

Anonymous · 2005. Okt. 15. (Szo), 21.59
Mi lenne ha egyszerűen egy változóban eltárolnád az elérést aztán meg csak utána csapnád a fájlok nevét, és ezeket szépen kiiratod. pl:
<?php $host=array("/img","/text","/application");
2

<Nincs cím>

Anonymous · 2005. Okt. 15. (Szo), 22.31
Akkor pontosan, hogy is? Légyszi...írd le az egész átdolgozott scriptet. Kösz előre...
3

<Nincs cím>

Anonymous · 2005. Okt. 16. (V), 00.52
Nem vagyok egy nagy programozó szóval , most inkább nem esnék neki. A lányeg az, hog amikor kiiratod akkor nem csak azt iratod ki, hogy $file['name']. "feltöltése sikeres volt".... hanem elécsapod azt, hogy $host azaz $host.$file['name'] ! A $host ban pedig az eredeti elérést adod meg, s ha töb könyvtárat akarsz akkor tömbbe reszed szóval vhogy így nézne ki ez a rész:
<?php
$host="http://vmi.com/feltoltottfilek";
// $file a feltöltött fájl neve amit a form elküld
echo "<a href='$host$file'>$file</a> feltöltése sikeres volt";
Ha pedig a fájl tipusonként máshova akarod tölteni akkor a $host így néz ki:
<?php
$host=array("http://example.com/kep/","http://example.com/szoveg/","http://example.com/storage/");
sztem így a legegyszerűbb bár attól függ, hogy mennyire jó ez a statikus megoldás!
4

Olvass doksit

janoszen · 2005. Okt. 16. (V), 19.02
Üdv!

A PHP dokumentációjában (php.net) az opendir parancs dokumentációjánál legalább 10 példát találsz hasonló dolgokra. Mielőtt postolsz, illene elolvasni a dokumentációkat.