Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z download`em
Forum PHP.pl > Forum > PHP
Trui
Witam!

Mam problem z banalnym kawalkiem kodu i nie wiem co jest nie tak...
Moze wam cos zaswita do glowek i podzielicie sie swoim olsnieniem

Problem polega na tym ze na serwerze w jednym katalogu jest kilka plikow. Uzytkownicy moga je pobierac a ja chce wiedziec ile razy ktory plik byl pobierany...tak wiec mam taki kawalek kodu:

[php:1:47986500c6]<?php
...
$file_name="nazwa_pliku_pobierana_z SQL"; //nazwa pobierana jest z SQl i wstawiana do zmiennej
$path="download/";
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=".$file_name);
readfile($path.$file_name);
...
?>[/php:1:47986500c6]
I chodzi o to ze plik jest wysylany do przegladarki ale po zakonczeniu pobierania okazuje sie ze plik nie dziala... Zasysajac to przez ftp dziala wiec na serwerze jest dobra wersja pliku! O co tu chodzi?
Z gory dziekuje za odpoiwedzi!
Pozdrawiam
Trui
Czy nikt z was nie moze mi pomoc?questionmark.gif
NIE WIERZE W TO!!!!

Pytanie: "Dlaczego ten mechanizm downloadu nie dziala?"

Ja juz probowalem wielu rzeczy i powoli miekne sad.gif

Czekam na wasze podpoiwedzi.

Pozdrawiam
jono
1)Sprawdź czy pliki zasysane z ftp i z html są identyczne

2)Sprawdź na innym kompie

3)Nie wiem smile.gif
bulek
zobacz czy dziala ci ten mechanizm na nie zzipowanym pliku tylko na czystm txt. Napisz jak ci poszlo bedziemy dalej kombinowac
spenalzo
Spróbuj:
[php:1:4239d9c3d3]<?php
$f=fopen($path.$file_name,'rb');
fpassthru($f);
?>[/php:1:4239d9c3d3]

Cytat
Przykład 1. Using fpassthru() with binary files

[php:1:4239d9c3d3]<?php
// open the file in a binary mode
$name = ".publicdevimgok.png";
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: ".filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;

?>[/php:1:4239d9c3d3]
FiDO
Sprobuj tak:

[php:1:9557bb8ffd]
....
$file = './files/'.$fname;

header("Cache-control: private"); // another fix for IE
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=".basename($file));
header("Connection: Close");

readfile($file);
[/php:1:9557bb8ffd]
spenalzo
Przykład z manuala:
[php:1:437d5c967e]<?php
$filename=""; // the name the file will have on client computer
$file_to_download=""; // the name the file has on the server (or an FTP or HTTP request)
$user_agent = strtolower ($_SERVER["HTTP_USER_AGENT"]);
header( "Content-type: application/force-download" );
if ((is_integer (strpos($user_agent, "msie"))) && (is_integer (strpos($user_agent, "win")))) {
header( "Content-Disposition: filename=".$filename);
} else {
header( "Content-Disposition: attachment; filename="$filename);
}
header( "Content-Description: File Transfert");
@readfile($file_to_download);[/php:1:437d5c967e]
http://pl.php.net/readfile - II komentarz
Trui
Dzieki bardzo za odpowiedzi!
poniewaz czas mnie naglil rozwiazalem to "po wiejsku"
[php:1:79f555cf24]<?php
...
$file_name="nazwa_pliku_pobierana_z SQL";
$path="download/";
header("Location: ".$path.$file_name."n");
...

?>[/php:1:79f555cf24]
Teraz na spokojnie przeanalizuje co tu nie gra!

Pozdrawiam.
Pianandrill
Mam taki problem.
Zrobilem skrypt pobierania plików z licznikiem pobran.
Plki pobiera sie odwołując sie do pliku ld.php z parametrem określającym plik do pobrania. Plik dl.php zlicza pobranie i wysyła plik.
Wszystko generalnie dziala ok, ale niemogę sie pozbyć jednej rzeczy. Po udanym downloadzie kursor myszki dostaje klepsydry i dopuki nie odświerze stronki lub nie przejdę do innej to cały czas sie tak zachowuje.
Użyłem najprostrzej budowy pliku dl.php (bez licznika, sprawdzania poprawności i istnienia pliku, komunikatów i innych) i nadal pojawia sie klepsydra.

[php:1:20266962a3]<?php
$plik=fopen("down/Lucon.zip","rb");

header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=Lucon.zip");
header("Connection: close");
fpassthru($plik);

exit();
?>[/php:1:20266962a3]

Oczywiście nazwa pliku jest wyciągana z bazy, ale nawet przy najprostrzej budowie pojawia sie klepsydra :| moze ktos mi powie w czym jest bląd.

linki do plikow to na przyklad takie cos

<a href="dl.php?fl=DM_-_Lucon">Link</a>

Akurat u mnie fl=id_pliku, ale to niema znaczenia. To co podalem zachowuje sie tak jak opisalem
Plik sie pobiera prawidłowo, strona nawet po dłuższym oczekiwaniu (2min?) nie wskazuje błędu ale zdaje sie ze zrzera zasoby sys bez opamiętania.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.