Avatar billede eqvaliser Nybegynder
01. marts 2010 - 12:36 Der er 7 kommentarer og
1 løsning

File download ødelægger filtypen + forkert fil størrelse.

når jeg prøvet at hente fil via dette
så "ødelægger" den filen, og det er forkert størrelse.

ved dette punkt har kontrolleret filen eksistere.
$filename = filnavnet incl efternavn.
$fileloc = afdreesen + filnavnet, har tjekket med echo den er ok.
$size = hentet fra database, hvor ved upload blev filstørrelsen
gemt sammen med navn osv. også korrekt i bytes.

********************************


    $mimetype = "content-Type: application/force-download";

    header("Cache-Control:");
    header("Cache-Control: public");
    header("Content-Type: $mimetype");

    $header='Content-Disposition: attachment; filename='.$filename;
    header($header);
    header("Accept-Ranges: bytes");

    $fileopen = fopen($fileloc, 'r');
 
    fseek($fileopen, $seek_start);

    $data = fread($fileopen, $size);

    fflush($fileopen);
    fclose($fileopen);


Måske skulle jeg bruge en anden function end fread
men ved ikke lige hvilken,
Jeg mistænker den for at "læse" file som code istedet for
at kopiere den til browseren.. 

nogle forslag ?
Avatar billede repox Seniormester
01. marts 2010 - 13:04 #1
Har du en URL jeg kan teste downloadet på?
Evt. PM mig adressen, hvis du foretrækker den hemmelig... Jeg vil gerne se outputtet - tror det kan afsløre problematikken.
Avatar billede eqvaliser Nybegynder
01. marts 2010 - 13:13 #2
næ der er såmænd ikke noget hemmeligt..
Det er alt sammen bare på localhost kører igennem
en vbulletin installation..

Fil upload -> server + data gemt i mysql
Fil download -> hent sql fil info, download fil

og koden ovenfor viser den del som downloader filen.

Filerne jeg har testet med er nogle .zip filer som
indeholder nogle forskellige billede filer, txt filer og xml test.

Men efter download kan filen slet ikke åbnes/unzip
Og hvis jeg finder filen i dens mappe så funger den fint på serveren.
så fejlen må da værer i download koden.. 

har ik mulighed for live upload, pga det vil give mange fejl på
et live site.
Avatar billede repox Seniormester
01. marts 2010 - 13:17 #3
Jeg vil stadig meget gerne se outputtet af den downloadede fil.
Har du mulighed for at sende den generede fil til l33tnasty at gmail dot com som en vedhæftning?
Avatar billede eqvaliser Nybegynder
01. marts 2010 - 13:24 #4
lille opdatering,  uanset fil størrelse så outputtet er ALTID det samme.. 

Links til testfil : 

Original som også er på serveren : ca 11kb.
http://www.evisystems.org/temp/test.zip

Efter download igennem script nu kun 0.1kb.
http://www.evisystems.org/temp/download_test.zip
Avatar billede repox Seniormester
01. marts 2010 - 13:30 #5
Skift det her:
$fileopen = fopen($fileloc, 'r');

fseek($fileopen, $seek_start);

$data = fread($fileopen, $size);

fflush($fileopen);
fclose($fileopen);


ud med det her:
echo file_get_contents($fileloc);


Og giv en melding på om det virker?
Avatar billede -mundi- Nybegynder
01. marts 2010 - 13:36 #6
Hvis du åbner din zip fil med f.eks notepad eller lign, vil du se at den indeholder :
<br />
<b>Warning</b>:  fseek() [<a href='function.fseek'>function.fseek</a>]: stream does not support seeking in <b>C:\xampp\xampp\htdocs\emod\emap.php</b> on line <b>70</b><br />

Derfor fylder den altid det samme.
Avatar billede eqvaliser Nybegynder
01. marts 2010 - 13:42 #7
Repox

Yes!  :D  utroligt men det funger.. smid et svar

Vil lige google file_get_contents(); og se lidt mere..
tusinde tak!
Avatar billede repox Seniormester
01. marts 2010 - 13:53 #8
#7
Som #6 siger ville du kunne åbne din fil med en almindelig tekseditor og så havde du set fejlen med det samme.
Men da jeg bemærkede at du kørte på en windows maskine ville jeg se om du kunne få file_get_contents() til at virke inden jeg specificerede fejlen.

Læs om funktionen på http://php.net/file_get_contents
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

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