Autor Zpráva
vratkar
Profil *
Ahoj,
potreboval bych udelat script, ktery by stahnul soubor s tim ze by se neprozeadilo umisteni toho souboru na serveru.

www.neco.cz/slozka/soubor.doc - cesta
www.neco.cz/get.php?stahni=soubor.doc

dik
Casero
Profil
vratkar
V souboru get.php bude něco takového:

<?php


$soubor = "slozka/".$_GET["stahni"];

header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename="$soubor"");

readfile ($soubor);
?>
TomAsQo
Profil
casero: ahoj,
bol by si taky dobry a napisal vyznam hlaviciek

header("Content-Description: File Transfer");

header("Content-Type: application/force-download");

alebo hodil link? diky :)
Casero
Profil
TomAsQo
Nejsem znalec, ale řekl bych, že
header("Content-Description: File Transfer"); => popis obsahu = přenos souboru

header("Content-Type: application/force-download"); => obsah je typu aplikace ke stažení
vratkar
Profil *
kdyz tam dam vetsi soubor, jeto pomaly
bukaj
Profil
vratkar
kdyz tam dam vetsi soubor, jeto pomaly
rychlejší by to nebylo, ani kdybys to stahoval přímo ;) záleží na rychlosti tvého připojení a připojení serveru, na kterém to máš
peki
Profil
Pre vseykych hlavne Casero
Neni to nic moc nakolko:
spravil som si skript , ktory precita vsetky headre , vysledok:

HTTP/1.1 200 OK
Date: Sat, 18 Aug 2007 22:44:02 GMT
Server: Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.1.6
X-Powered-By: PHP/5.1.6
Content-Description: File Transfer
Content-Disposition: attachment; filename="ownloadsrv/nieco.app.exe"
Content-Length: 27
Connection: close
Content-Type: application/force-download
Problem je ze headre sa posielaju ku klientovi teda je to tak kvalitne ako ochrana JavaScriptom... :)
Riesenie:.htaccess
krteczek
Profil
peki: jenže filename je název souboru, který chceš aby se zobrazil a soubor se tak jmenoval a co tam dáš je jen na tobě ;-), to odkud se soubor načítá je důležité jen pro funkci readfile(), aby mohla přistoupit k tomu souboru a odeslat ho.
Jak myslíš že by vypadala cesta u souborů, které jsou uložené v databázi?
vyzkoušet si to můžeš zde: http://hp.jaknato.com/
peki
Profil
krteczek
aha chapem :) , ale myslim ze aj tym htaccessom by to slo, teda asi idealne aj aj , lebo napr, niekto zisti nazov zlozky, a uz ju "ma" :).
Teda ja by som sa len na toto nespoliehal
krteczek
Profil
peki: co z toho že ji má (lebo napr, niekto zisti nazov zlozky, a uz ju "ma" :). , když:
1. z bezpečnostních důvodů je zakázán výpis adresářů
2. skutečné jméno souboru neznáš
3. stejně je ten soubor nabídnut ke stažení...
4. soubor může být teprve vygenerováván
5. může být uložen v databázi (ta cesta by mohla být zajímavá => protože fyzicky neexistuje, chtel bych videt jak neco takoveho listujes jako hacker :-))
6. lze nastavit práva ke složce, i k samotným souborům tak aby k nim měl přístup jen script
berkoff
Profil *
No jo, a co s tim, kdyz ty soubory co chci davat na stazeni jsou uplne jinde v ./home/ftp/ a je k nim pristup jen pres ftp? jde to nejak vyresit?
berkoff
Profil *
tak nakonec jsem to praskul primo, ale mam jiny problem, v FF chodi, v IE ne, snazi se to ulozit soubor ULOZ jako Dokument, poradite?


uloz.php

$soubor = 'download/'.$link.'';
header("Content-Description: File Transfer");
header("Pragma: hack");
header("Content-Length: " .(string)(filesize($soubor)) );
header("Content-Type: application/force-download");
header('Content-Transfer-Encoding: Binary');
header('Content-Disposition: attachment; filename='.$soubor.'');
readfile($soubor);
berkoff
Profil *
reseni:


$filename= 'download/'.$link.'';

// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');

// addition by Jorg Weske
$file_extension = strtolower(substr(strrchr($filename,"."),1));

if( $filename == "" )
{
echo "<html><title>eLouai's Download Script</title><body>ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath</body></html>";
exit;
} elseif ( ! file_exists( $filename ) )
{
echo "<html><title>eLouai's Download Script</title><body>ERROR: File not found. USE force-download.php?file=filepath</body></html>";
exit;
};
switch( $file_extension )
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename="".basename($filename)."";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();

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