Autor Zpráva
adicze
Profil
Zdravím,
je tady nějaká dobrá duše, která by mi do podrobna dokázala poradit s UPLOAD systémem?
dělám webový administrační systém pro správu budovy a potřebuji vytvořit systém přes který může uživatel nahrát soubor. Soubor bude formátu PDF a bude to smlouva. Tudíž potřebuji, aby na několika stránkách administrace byl systém kdy může uživatel nahrát tento soubor a později se na něj podívat. Ovšem jelikož tam těch smluv bude více, tak potřebuji, aby se po kliknutí na tlačítko zobrazit, zobrazil nejnovější soubor, který byl do složky nahrán. Případně, aby se při nahrání nové smlouvy ta předchozí smazala. + aby ji uživatel mohl stáhnout
Taps
Profil
adicze:
Php upload obrázků (ve skriptu si jen upravíš koncovky, které chceš nahrávat)
adicze
Profil
Taps:
Díky ovšem pokud dobře čtu, tak neobsahuje systém zobrazování. Potřebuji aby se při nahrání nového souboru vymazal ten předchozí a abych klikem na tlačítko zobrazil ten soubor
RastyAmateur
Profil
adicze:
Zobrazování?
<a href="path/to/file.pdf">Klikni!</a>
Vymazat předchozí by také neměl být problém. Jde to pomocí unlink(). Název souboru budeš mít buď uložený v databázi, nebo lze získat např. pomocí scandir() apod. Jediné, na co bych ti doporučil dát pozor jsou názvy souborů. Podle mých zkušeností dělá diakritika, mezery a podobné znaky v názvech PHPku docela problém. Já to většinou řeším tak, že nahranému souboru dám nějaký náhodný název a relaci mezi tímto náhodným názvem a původním názvem si ukládám někam do databáze. Případně to řeším Pythonem, ale to ti v tuto chvíli asi nepomůže (:
adicze
Profil
RastyAmateur:
Díky, myslíš, že by šlo vytvořit pomocí nějakého příkazu aby se soubor po nahrání automaticky přejmenoval na něco a tudíž by v příkazu pro nahrávání mohl zůstat jeden trvalý název jelikož by tam byl soubor který se automaticky přejmenuje na ten samý název? Jak jsi psal tak bez diakritiky.
Keeehi
Profil
Při uploadu souborů se obyčejně používá funkce move_uploaded_file která přesune soubor z dočasného úložiště kam je nahrán do místa kde ho chceš. Při tom přemístění se i přejmenuje a pokud se bud přemisťovat na to samé místo, bude i přepisovat ten původní soubor.
adicze
Profil
Keeehi:
V tom případě, když použiji tento sript PHP upload obrázků , který tento příkaz obsahuje, tak tam pouze přidám unlink, aby se smazal původní soubor a nebral zbytečně místo v uložišti? Tudíž výsledná část pro přesun a smazání by měla vypadat takto?
// presun souboru
        if(move_uploaded_file($tmpName, "{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}")) {
            unlink("smlouvy/soubor.pdf");
            ++$counter;
        }
Taps
Profil
adicze:
asi bych jeste pro unlink pridal podminku if, kterou budu kontrolovat existenci souboru..
RastyAmateur
Profil
adicze:
Ale jak psal Keeehi, pokud budeš mít tedy nějaký statický název toho souboru, stačí move_uploaded_file($tmpName, "smlouvy/soubor.php"). Navíc nahráváš pravděpodobně jednu smlouvu, že? Pak je tedy $counter zbytečný

Ještě moje menší otázka, je nějaký rozdíl nebo výhoda mezi následujícími zápisy?
"{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}";
$uploadDir . DIRECTORY_SEPARATOR . $fileName;
adicze
Profil
RastyAmateur:
Budu mít jednu smlouvu na jednu složku, ale více složek na více smluv. Ale jelikož na to bude více stránek, tak tam se nemusí nic řešit
A k tvé otázce: Já myslím, že ne, nebo jsem se s ním aspoň nesetkal. Podle mě je to stejné jako když v html použiješ buď " nebo '. Ale nejsem si jistý, je to pouze moje domněnka.
Keeehi
Profil
Ten unlink není potřeba, protože se ten původní soubor přepíše novým. Smaže se tedy automaticky.

RastyAmateur:
Ještě moje menší otázka, je nějaký rozdíl nebo výhoda mezi následujícími zápisy?
Výsledek bude stejný.

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