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 *
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 *
Luky:
if(ftp_fget($conn, $th, $fname, FTP_ASCII, 0))
if(ftp_fget($conn, $th, $fname, FTP_BINARY, 0))
Luky
Profil
Děkuji mnohokrát, už to dělá co 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: