Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

download problem

[es] :: PHP :: download problem

[ Pregleda: 2152 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

twister

Član broj: 735
Poruke: 147
..njuel-bg.customer.sbb.co.yu.



Profil

icon download problem17.02.2006. u 19:18 - pre 221 meseci
Nadam se da nisam promasio forum.

Posetioci sajta treba da budu u mogucnosti da download-uju softver kada unesu username i pass (cita se iz baze). Naravno, link ne sme da se vidi. Pomislio sam da bi najbolji nacin bio da nakon unosa usr/pwd forsiram download koristeci header. I to radi.

Ali SAMO NA BRZIM VEZAMA. Kad neko pokusa sa telefonske linije (digitalne, bez obzira na provajdera) prenos fajla puca - klijenti kazu najcesce na oko 70% a kada sam ja testirao, pucao je na 16%, sto je verovatno nebitno.

Pomislio sam da je mozda do max_execution_time u php.ini-i s obzirom da idem preko hedaer-a. Dodao sam set_time_limit(10000) (bilo je na 1000)
I dalje puca.

Sajt je radjen u PHP-u i MySQL-u. Provajder je Loopia. Fajl je velicine 3.5MB.

Hvala unapred.

 
Odgovor na temu

SmilieBG
Aleksandar Skodric
NL

Član broj: 13094
Poruke: 1821
*.speed.planet.nl.



+3 Profil

icon Re: download problem17.02.2006. u 20:50 - pre 221 meseci
Uh :S Tu moze da bude mali milion stvari koje uticu na to :(

I ja sam radio skriptu za download, gde sam takodje sam fajl preko header-a slao i to lepo radi (stim sto su veci fajlovi, od 16 do 80 MB), pa cak i na sporijim vezama...

Kako saljes sam fajl korisniku? Preko headera ili...? Daj taj deo koda.

Poz,
Sale
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
 
Odgovor na temu

twister

Član broj: 735
Poruke: 147
..njuel-bg.customer.sbb.co.yu.



Profil

icon Re: download problem18.02.2006. u 20:36 - pre 221 meseci
Evo koda, ali mislim da je lakse da ti posaljes svoj, premda radi :)
u sustini sam radio c&p koda sa neta, samo sam iskoristio u svojoj funkciji

function dl_file($file){
if (!is_file($file)) { die("<b>404 File not found!</b>"); }

//Gather relevent info about file
$len = filesize($file);
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));

//This will set the Content-Type to the appropriate setting for the file
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;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;

//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
case "php":
case "htm":
case "html":
case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break;

default: $ctype="application/force-download";
}

//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");

//Use the switch-generated Content-Type
header("Content-Type: $ctype");

//Force the download
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
//header("Location: http://www.sbb.co.yu");
@readfile($file);
exit;
}
 
Odgovor na temu

SmilieBG
Aleksandar Skodric
NL

Član broj: 13094
Poruke: 1821
*.speed.planet.nl.



+3 Profil

icon Re: download problem18.02.2006. u 21:14 - pre 221 meseci
Cao,

Ovako, pazi se sa @readfile() posto mu je cud takva, da prvo ucita ceo fajl u RAM pa tek onda da ga salje... Ako imas puno ljudi koji skidaju, ode RAM, posle njega pada CPU i onda ode sve...

Sto se tice downloada, ja sam to ovako resio (posto je meni readfile ubija server):

Code:

$downloaddir = "/root/music/download/sm/";
$downloadURL = "http://download.mojdomen.com/sm/";

$letters = 'abcdefghijklmnopqrstuvwxyz';
srand((double) microtime() * 1000000);

$string = '';
for ($i = 1; $i <= rand(4,12); $i++) 
{
   $q = rand(1,26);
   $string = $string . $letters[$q];
}

mkdir($downloaddir . $string, 0777);
$target = $_GET['file'];
$new_file = substr(strrchr($file, '/'), 0);
symlink($target, $downloaddir . $string . $new_file);

Header("Location: " . $downloadURL . $string . $new_file);


Ovo sam 'morao' ovako da resim, posto mi je readfile ubijao server. Drugi nacin, koji je za mene mogao da prodje jeste da 'seckam' fajl koji saljem, pa malo po malo da ga saljem, ali mi je ovo bilo daleko jednostavnije... Naravno, dedicated server, pa imam sve privilegije, sto u tvom slucaju moze da bude prepreka, ali ti daje ideju kako sam to resio ;)

Poz,
Sale
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
 
Odgovor na temu

twister

Član broj: 735
Poruke: 147
..njuel-bg.customer.sbb.co.yu.



Profil

icon Re: download problem19.02.2006. u 17:04 - pre 221 meseci
Problem je u tome sto je server na windows-u, tako da symlink ne mogu da loristim. Izvinjavam se, zaboravio sam to da napisem.
Kada postavim location u header, IE download-uje fajl, a CrazyBrowser pocne da otvara djubre. Ima li resenja, tako da svaki browser pocne download?

--- pomalo off-topic:
Nisam korisnik *nix sistema, ne znam da li symlink traje samo tokom jedne konekcije (HTTP/1.1) ili kako se vec to gleda? Posto kreiranje foldera i pravljanje symlinkova (u slucaju neautomatskog brisanja) verovatno "ubilo" prostor na hardu.
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: download problem19.02.2006. u 18:25 - pre 221 meseci
Jedan primer koji sam nedavno pisao za www.phpbee.com:

Code:

if (isset($_POST["username"]) && ($_POST["username"] == "phpbee") && 
    isset($_POST["password"]) && ($_POST["password"] == "phpbee"))
  SendFile();
else
  DisplayLoginPage();

function DisplayLoginPage()
{
?>
<html>
  <head>
    <title>Protected download</title>
  </head>
  <body>
    <h2>Welcome to download area</h2>
    <p> Type username and password to download a file </p>
    <p> Type phpbee for both username and password </p>
    <form action="download.php" method="post">
      Username<br>
      <input type="text" name="username"><br>
      Password<br>
      <input type="password" name="password"><br>
      <input type="hidden" name="login"><br>
      <input type="submit">
      <input type="reset">
    </form>
  </body>
</html>
<?php
}

function SendFile()
{
  $FileName = "filename.zip";
  //header("Content-Type: " . mime_content_type($FileName));
  // if you are not allowed to use mime_content_type, then hardcode MIME type
  // use application/octet-stream for any binary file
  // use application/x-executable-file for executables
  // use application/x-zip-compressed for zip files
  header("Content-Type: application/octet-stream");
  header("Content-Length: " . filesize($FileName));
  header("Content-Disposition: attachment; filename=\"$FileName\"");
  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  $fp = fopen($FileName,"rb");
  fpassthru($fp);
  fclose($fp);
}

 
Odgovor na temu

SmilieBG
Aleksandar Skodric
NL

Član broj: 13094
Poruke: 1821
*.speed.planet.nl.



+3 Profil

icon Re: download problem19.02.2006. u 21:27 - pre 221 meseci
pogledaj i http://php3.de/fpassthru

ja cu od nedelje da preradim moju skriptu, sa ciljem da:

1. moze da se nastavi download u slucaju pucanja veze;
2. da vrati info ukoliko je download uspesan.

Poz,
Sale
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
195.252.99.*

Sajt: https://avramovic.info


+46 Profil

icon Re: download problem19.02.2006. u 21:59 - pre 221 meseci
...i okachi je ovde
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

SmilieBG
Aleksandar Skodric
NL

Član broj: 13094
Poruke: 1821
*.speed.planet.nl.



+3 Profil

icon Re: download problem19.02.2006. u 23:12 - pre 221 meseci
stavicu je negde na netu, bice dostupna ;)

Poz,
Sale
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
195.252.99.*

Sajt: https://avramovic.info


+46 Profil

icon Re: download problem20.02.2006. u 09:03 - pre 221 meseci
Hvala unapred!
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

[es] :: PHP :: download problem

[ Pregleda: 2152 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.