/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
download af fil fra MySQL database
Fra : HCH


Dato : 30-01-01 09:30

Hej, læs lige nedenstående fejlbeskrivelse og læs mit script nederst.

Jeg har lavet en MySQL database indeholdende en masse forskellige filer
(recordtypen er LongBlob, og jeg forsøger nu at lave et download-script
"Hentfil.php3" der kaldes fra min hjemmeside med id'et på den fil der ønskes
downloadet.

Scriptet virker kun delvist. Hvis jeg kører det kommer der godtnok standard-
dialogen med overskriften "Du har valgt at hente en fil fra dette sted, hvor
jeg
har de to valg "Åbn filen fra dens nuværende placering" eller "Gem filen på
disken".

Men i linien der angiver filnavnet står der "sendfile.php3?id=1 fra
mitwebsted.dk."
istedet for selve filnavnet.

Vælger jeg at gemme filen på disk, kommer standard-savedialogen og i dette
billede er filnavnet korrekt. Dette er testet og fungerer fint.

Vælger jeg derimod at åbne filen, får jeg samme billede igen, hvor jeg skal
vælge mellem at åbne eller gemme filen. Nu er filnavnet dog blevet
rigtigt!!!
Og vælger jeg igen at åbne filen - ja så bliver den åbnet korrekt!!!!

Jeg fatter intet, og vil blive meget taknemmelig for al den hjælp jeg kan
få.

Med venlig hilsen
HC Henriksen
email : hchhimself@hotmail.com

------------Script Sendfile.php3------------

<?PHP
$connection=mysql_connect("localhost","hch","hch");
$result=mysql_select_db("HCH", $connection);
$result=mysql_db_query("HCH","SELECT id, filnavn, filen FROM Files WHERE
id=$id");

if(mysql_num_rows($result)>0)
{
$row=mysql_fetch_row($result);
header("Content-type: application/octet-stream");
header("Content-Disposition: type=attachment; filename=\"$row[1]\"");

echo $row[2];
}
?>







 
 
Morten (31-01-2001)
Kommentar
Fra : Morten


Dato : 31-01-01 00:01


Det er p.g.a. HTTP-headeren som bliver sendt fra HTTP-serveren (Apache,
eller?). Hvis du sætter de rigtige HTTP-headers i dit PHP-script, så vil
browseren der modtager filen tro at det er en anden filtype end PHP....

PHP-koden:

header( "Content-type: application/x-gzip" );
header( "Content-Disposition: attachment; filename=some-file.tar.gz" );
header( "Content-Description: PHP3 Generated Data" );

Du skal nok ændre første linie til at afspejle den pågældende filtype. Kig i
filen "apache-mine.types" (på Apache/Linux) for at se hvad du har af
muligheder...

Linie 2 giver dig mulighed for at foreslå et filnavn, som filen skal gemmes
som... Linie 3 kan du nok undvære, men den er jo meget fed at have med....

Jeg ved ikke om det virker på alle browsere.

Der er en oversigt over HTTP-headers her:
http://www.w3.org/Protocols/HTTP/Object_Headers.html

Håber det virker.
/Morten



HCH <hchhimself@NOSPAM.hotmail.com> wrote in message
news:3a767e3e$0$3191$73beb97d@news.dk.uu.net...
> Hej, læs lige nedenstående fejlbeskrivelse og læs mit script nederst.
>
> Jeg har lavet en MySQL database indeholdende en masse forskellige filer
> (recordtypen er LongBlob, og jeg forsøger nu at lave et download-script
> "Hentfil.php3" der kaldes fra min hjemmeside med id'et på den fil der
ønskes
> downloadet.
>
> Scriptet virker kun delvist. Hvis jeg kører det kommer der godtnok
standard-
> dialogen med overskriften "Du har valgt at hente en fil fra dette sted,
hvor
> jeg
> har de to valg "Åbn filen fra dens nuværende placering" eller "Gem filen

> disken".
>
> Men i linien der angiver filnavnet står der "sendfile.php3?id=1 fra
> mitwebsted.dk."
> istedet for selve filnavnet.
>
> Vælger jeg at gemme filen på disk, kommer standard-savedialogen og i dette
> billede er filnavnet korrekt. Dette er testet og fungerer fint.
>
> Vælger jeg derimod at åbne filen, får jeg samme billede igen, hvor jeg
skal
> vælge mellem at åbne eller gemme filen. Nu er filnavnet dog blevet
> rigtigt!!!
> Og vælger jeg igen at åbne filen - ja så bliver den åbnet korrekt!!!!
>
> Jeg fatter intet, og vil blive meget taknemmelig for al den hjælp jeg kan
> få.
>
> Med venlig hilsen
> HC Henriksen
> email : hchhimself@hotmail.com
>
> ------------Script Sendfile.php3------------
>
> <?PHP
> $connection=mysql_connect("localhost","hch","hch");
> $result=mysql_select_db("HCH", $connection);
> $result=mysql_db_query("HCH","SELECT id, filnavn, filen FROM Files WHERE
> id=$id");
>
> if(mysql_num_rows($result)>0)
>

> $row=mysql_fetch_row($result);
> header("Content-type: application/octet-stream");
> header("Content-Disposition: type=attachment; filename=\"$row[1]\"");
>
> echo $row[2];
> }
> ?>
>
>
>
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177511
Tips : 31968
Nyheder : 719565
Indlæg : 6408590
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste