Autor | Zpráva | ||
---|---|---|---|
Luky Profil |
Zdravím,
zkouším vytvořit aplikaci, která uživateli umožní nahrát soubor (na WEDOS disk) a následně ten soubor třeba stáhnout. Upload souborů se mi povedl, ale se stahováním mám problém. Má to fungovat tak, že každý uploadovaný soubor má vygenerovaný svůj klíč, a pokud tento klíč zadám do URL (domena.cz/v/4G8r), tak by se mělo zjistit jaký soubor se bude stahovat a následně spustit stahování. Problém mám právě ve spuštění toho stahování. <?php // FTP connect $fileFrom = '4G8r.jpeg'; $fileTo = 'nazev-souboru.jpeg'; $ftpObj->downloadFile($fileFrom, $fileTo); // zde by měl být header ?> Soubor se sice stáhne, ale pouze do adresáře webu. Nevím jak správně nastavit header tak, aby se uživateli spustilo stahování. Napadá mě možnost: soubor z WEDOS disku stáhnout do adresáře webu, pak ho nabídnout uživateli, a následně ho zase smazat. |
||
mzk Profil * |
#2 · Zasláno: 16. 2. 2013, 11:59:26
Luky:
někde jsem četl, že časem bude možnost generování dočasnýho odkazu na stažení souboru přímo z Wdisku (bude to někde na stránkách, nechce se mi to ale hledat :-D) podle mě bude záležet co je to za soubory (hlavně na velikosti), teoreticky by snad mělo jít ty soubory načítat jen do proměnné a následně posílat prohlížeči.. pokud to budou obrázky, tak ty bys teoreticky nemusel ani tahat na disk a pak zpět (prostuduj si ale radši pořádně podmínky služby hostingu) ohledně kódu se pak můžeš inspirovat scriptem na stahování - záleží jak se to rozhodneš řešit.. |
||
Luky Profil |
Už se mi to povedlo někde odkoukat tak aby se soubory nemuseli ukládat do adresáře webu a rovnou se vypsal a stáhnul.
Mám tento kód, který mě na localhostu funguje (obrázek se v pořádku stáhne). Na webhostingu (WEDOS) se soubor sice stáhne, ale nezobrazí se (Windows prohlížeč fotografií: ...formát obrázku není podporovaný nebo nemáte aktualizovaný prohlížeč fotografií - obrázek se stáhne normálně s příponou). Od originálu se ani moc neliší má jen asi o tisíc bajtů méně ;) download.php <?php $fname = "vbHN.png"; $conn = ftp_connect("0000.s00.wedos.net"); if(ftp_login($conn, "s0000", "password")) { if(ftp_chdir($conn, "Slozka/adresar")) { $th = fopen('php://temp', 'r+'); if(ftp_fget($conn, $th, $fname, FTP_ASCII, 0)) { rewind($th); $data = stream_get_contents($th); } } } header('Content-Description: File Transfer'); header('Content-Type: application/force-download'); header("Content-Disposition: attachment; filename=$fname"); echo $data; exit; |
||
mzk Profil * |
#4 · Zasláno: 16. 2. 2013, 15:16:17
Luky:
„if(ftp_fget($conn, $th, $fname, FTP_ASCII, 0))“ if(ftp_fget($conn, $th, $fname, FTP_BINARY, 0)) |
||
Luky Profil |
#5 · Zasláno: 16. 2. 2013, 17:56:38
Děkuji mnohokrát, už to dělá co má :)
|
||
Časová prodleva: 11 let
|
0