Avatar billede ellegaarddk Nybegynder
27. februar 2007 - 13:23 Der er 17 kommentarer og
1 løsning

filesize() opfører sig underligt

Jeg har en webside med pdf-filer til download. Jeg har efterhånden fået strikket et script sammen, der kan håndtere det - også med behørig tagen højde for browser-forskelle (jeg HADER dem!).

Men enkelte filer giver mig store og problemer og jeg kan ikke finde ud af hvorfor. Det fleste filer fungere fint med dette i header:

header('Content-Disposition: attachment; filename='.$filnavn);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Length: " .filesize($filnavn));
header('Pragma: public');

Men der er altså et par stykker, der ikke vil være med. Af en eller anden grund får jeg ikke opgivet nogen filstørrelse på trods af at den fint går igennem ved de andre filer.
Avatar billede sone Nybegynder
27. februar 2007 - 13:31 #1
prøv da at log din filesize til en fil...
Avatar billede ellegaarddk Nybegynder
27. februar 2007 - 14:00 #2
det har jeg prøvet, det ser fint ud
Avatar billede ellegaarddk Nybegynder
27. februar 2007 - 14:04 #3
echo $filesize

giver resultatet

15867513
Avatar billede sone Nybegynder
27. februar 2007 - 14:14 #4
hvad er problemet så i praksis?
Avatar billede Slettet bruger
27. februar 2007 - 14:19 #5
Har selv haft problemer med dette... proev foelgende:

$contentType = 'application/pdf';
$path = 'filename.pdf';
header('Pragma: private');
header('Cache-control: private, must-revalidate');
header("Content-Type: application/octet-stream");
header('Content-length: '.filesize($path));
header ("Content-Disposition: attachment; filename=\"filename.pdf\"");
Avatar billede ellegaarddk Nybegynder
27. februar 2007 - 14:49 #6
sone: problemer er at når jeg starter en download, så er der fejl og filstørrelse bliver ikke 'oplyst'. Se http://www.efterskolen.com/modules.php?op=modload&name=PagEd&file=index&topic_id=7&page_id=98, det er især filen "Efterskolen 1, august 2006 - Efterskolen0106.pdf" der driller lige nu. De fleste (men ikke alle) virker fint.

regin: forstår ikke helt. Hvorfor opgiver du contenttype som to forskellige?? Jeg opgiver contenttype som application/pdf (længere oppe i scriptet), har prøvet andre uden held. Derudover indeholder din version så vidt jeg kan se ikke andre ændringer end filnavnet i quotes - og det er ikke der problemet er. Kan du forklare hvorfor dit burde virke bedre end det eksisterende - jeg har ikke meget styr på det med cache og prøver mig bare lidt frem?

Og så har rækkefølgen af header angivelserne vel ikke nogen betydning, vel?
Avatar billede sone Nybegynder
27. februar 2007 - 14:55 #7
Når jeg downloader i FF, står typen til Text document - og filen jeg får ud er tom (0 bytes)
Avatar billede ellegaarddk Nybegynder
27. februar 2007 - 15:04 #8
Men hvorfor gør den det for den ene fil? Filen i sig selv fejler ikke noget
Avatar billede ellegaarddk Nybegynder
27. februar 2007 - 15:08 #9
Med IE6 bliver filstørrelsen oplyst i downloadboksen - men ikke for denne fil.
Avatar billede Slettet bruger
27. februar 2007 - 16:15 #10
Mente foelgende:
$path = 'filename.pdf';
header('Pragma: private');
header('Cache-control: private, must-revalidate');
header("Content-Type: application/octet-stream");
header('Content-length: '.filesize($path));
header ("Content-Disposition: attachment; filename=\"filename.pdf\"");

Jeg har i nogle tilfaelde ogsaa vaeret udefor problemer med lange filnavne:
Proev eventuelt at skarenavnet paa filen nedunder 32 tegn.
Avatar billede ellegaarddk Nybegynder
27. februar 2007 - 17:43 #11
Regin:
Er du sød lige at forklare mig hvilken forskel der er på din og min udgave?
Som jeg skrev ovenfor, så har jeg prøvet med octet-stream også. Problemet opstår ved enkelte filer og har intet med filnavn at gøre - de er alle under 20 tegn.

Jeg tror problemet ligger et andet sted end i denne header info, nemlig hvorfor filesize() ikke i alle tilfælde rapportere korrekt.
Avatar billede ellegaarddk Nybegynder
27. februar 2007 - 17:54 #12
Jeg har fokuseret lidt mere på de filer der giver problemer og de er de eneste filer og 10MB - kan det påvirke det på nogen måde??
Avatar billede coderdk Praktikant
28. februar 2007 - 17:03 #13
Det burde det ikke... Prøv at sætte error level:

error_reporting( E_ALL );

og sæt Content-Type til text/plain
og exit; før du skriver filen til browseren og se om den siger noget
Avatar billede coderdk Praktikant
28. februar 2007 - 17:03 #14
evt echo'e $path og filesize( $path )
Avatar billede ellegaarddk Nybegynder
02. marts 2007 - 14:38 #15
Jeg er nu endnu mere overbevist om, at filstørrelsen har betydning. Alle de filer der nu giver problemer er over 9Mb store - og når jeg har haft dem en tur igennem en optimering med Acrobat og fået dem under 8.5Mb, så kan jeg hente dem uden problemer...

Spørg mig ikke hvorfor!
Avatar billede ellegaarddk Nybegynder
23. oktober 2007 - 08:52 #16
Jeg lukker spørgsmålet - nogen der vil have poit for forsøget
Avatar billede coderdk Praktikant
27. oktober 2007 - 11:27 #17
Ellers tak :)
Avatar billede ellegaarddk Nybegynder
29. oktober 2007 - 20:45 #18
vi lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester