/ 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 dialog box
Fra : ran2far


Dato : 09-12-09 02:15

Jeg har en side

http://kaalund.net/Henrik/Current/OnTheVergePhotos.htm

som jeg godt kunne tænke mig at at rette lidt på. Når man klikker på
et billede i en ringe opløsning skal en download-dialog-box til et billede i
en højere opløsning
startes. Altså ikke "save image as.." (hedder det "gem fil som..." på
Dansk?). Jeg vill ikke have at brugeren skal igennem nogetsomhelst med at
højre-klikke eller noget andet end: klik på det lille billede, vil du
downloade, ok. Jeg ved det kan gøres i java men brugeren kan jo have det
slået fra
og så er der det med pop-up blockere. Jeg ser det hele tiden fungere på
computer tidskifters hjemmesider når man
skal downloade noget. Kan det gøres i CSS? Eller PHP? Eller hvad? Hvad er
den
bedste måde at gøre det på, hvor man kan være sikker på at det fungerer på
alle platformer?





 
 
Stig Johansen (09-12-2009)
Kommentar
Fra : Stig Johansen


Dato : 09-12-09 02:56

ran2far wrote:

> skal downloade noget. Kan det gøres i CSS? Eller PHP? Eller hvad? Hvad er
> den
> bedste måde at gøre det på, hvor man kan være sikker på at det fungerer på
> alle platformer?

Det handler bare om at få sat en header på svaret.
Selv om det er MS/ASP, så synes jeg der er en rimelig god beskrivelse her:
<http://support.microsoft.com/kb/260519>

--
Med venlig hilsen
Stig Johansen

ran2far (12-12-2009)
Kommentar
Fra : ran2far


Dato : 12-12-09 00:49


>> skal downloade noget. Kan det gøres i CSS? Eller PHP? Eller hvad? Hvad er
>> den
>> bedste måde at gøre det på, hvor man kan være sikker på at det fungerer
>> på
>> alle platformer?
>
> Det handler bare om at få sat en header på svaret.
> Selv om det er MS/ASP, så synes jeg der er en rimelig god beskrivelse her:
> <http://support.microsoft.com/kb/260519>

OK, jeg har kigget lidt på det og prøvet at lave en side der skulle kunne
det. Men det fungerer ikke:

http://kaalund.net/Testing_PHP/test3.php

Jeg forstår det ikke.



Stig Johansen (12-12-2009)
Kommentar
Fra : Stig Johansen


Dato : 12-12-09 05:02

"ran2far" <henrik@kaalund.net> wrote in message
news:hfulot$2np$1@online.de...
> OK, jeg har kigget lidt på det og prøvet at lave en side der skulle kunne
> det. Men det fungerer ikke:
>
> http://kaalund.net/Testing_PHP/test3.php
>
Den giver bare en fejl:
.....
Parse error: syntax error, unexpected T_STRING in
/home/kaalund/public_html/Testing_PHP/test3.php on line 12
.....

> Jeg forstår det ikke.
Du har tilsyneladende en fejl i linie 12.

Det handler som sagt bare om at få sat et par headers og så dumpe filen i
output.

Jeg har lavet et eksempel (i ASP) her:
http://w-o-p-r.dk/images/picture_download.asp?name=206_i_rygsakken.jpg

Her sætter jeg de to headere på denne måde:
.....
Fname = split(Request.Querystring("name"),"/")
Response.ContentType = "image/" + split(Fname(uBound(Fname)),".")(1)
Response.AddHeader "Content-disposition","attachment;
filename="""+Fname(uBound(Fname))+""""
.....

Dvs. contentype bliver image/jpg eller image/gif osv, afhængig af det
angivne filnavn.

Det med uBound er det sidste i et array, så hvis man bruger kvalificerede
filnavne som i:
http://w-o-p-r.dk/images/picture_download.asp?name=/gallery/Stig_Johansen/Sa
mme_bredde_med_clip/picture_3.jpg

Bliver den sendt med filename = picture_3.jpg

Det er disse 2 headere, der er vigtige, og der er eksempler på hvordan man
gør det i PHP her:
http://php.net/manual/en/function.header.php

--
Med venlig hilsen/Best regards
Stig Johansen




ran2far (12-12-2009)
Kommentar
Fra : ran2far


Dato : 12-12-09 12:37


"Stig Johansen" <wopr.dk@gmail.com> wrote in message
news:4b2315b1$0$277$14726298@news.sunsite.dk...
> "ran2far" <henrik@kaalund.net> wrote in message
> news:hfulot$2np$1@online.de...
>> OK, jeg har kigget lidt på det og prøvet at lave en side der skulle kunne
>> det. Men det fungerer ikke:
>>
>> http://kaalund.net/Testing_PHP/test3.php
>>
> Den giver bare en fejl:
> ....
> Parse error: syntax error, unexpected T_STRING in
> /home/kaalund/public_html/Testing_PHP/test3.php on line 12
> ....
>
>> Jeg forstår det ikke.
> Du har tilsyneladende en fejl i linie 12.
>
> Det handler som sagt bare om at få sat et par headers og så dumpe filen i
> output.
>
> Jeg har lavet et eksempel (i ASP) her:
> http://w-o-p-r.dk/images/picture_download.asp?name=206_i_rygsakken.jpg
>
> Her sætter jeg de to headere på denne måde:
> ....
> Fname = split(Request.Querystring("name"),"/")
> Response.ContentType = "image/" + split(Fname(uBound(Fname)),".")(1)
> Response.AddHeader "Content-disposition","attachment;
> filename="""+Fname(uBound(Fname))+""""
> ....
>
> Dvs. contentype bliver image/jpg eller image/gif osv, afhængig af det
> angivne filnavn.
>
> Det med uBound er det sidste i et array, så hvis man bruger kvalificerede
> filnavne som i:
> http://w-o-p-r.dk/images/picture_download.asp?name=/gallery/Stig_Johansen/Sa
> mme_bredde_med_clip/picture_3.jpg
>
> Bliver den sendt med filename = picture_3.jpg
>
> Det er disse 2 headere, der er vigtige, og der er eksempler på hvordan man
> gør det i PHP her:
> http://php.net/manual/en/function.header.php

Ja, din asp kode fungerer jo fint. Desværre kan jeg ikke bruge asp, kun php.

Jeg skal indrømme at jeg ikke har et nys af begreb om php men har forstået
at det er den eneste vej (bortset fran andet serverside) hvis man vil have
en download box. Det lader til at der er andre på nettet som også vil det.
Men det fungere ikke blot at kopiere koden. Det minder mig lidt om "sæt
halen på æslet med bind for øjnene". Jeg undkylder for mine børnelege.



Stig Johansen (12-12-2009)
Kommentar
Fra : Stig Johansen


Dato : 12-12-09 14:18

"ran2far" <henrik@kaalund.net> wrote in message
news:hfvv8g$2ko$1@online.de...
>
> Ja, din asp kode fungerer jo fint. Desværre kan jeg ikke bruge asp, kun
php.

Så får du en aftestet version i PHP her:
.....
<?php
$name = $_GET['name'];
$nameA = split('/',$name) ;
$Fname = $nameA[count($nameA)-1] ;
$Fext = split('\.',$Fname) ;
header ('Content-type: image/'.$Fext[1]);
header ('Content-disposition: attachment; filename="'.$Fname.'"');
readfile($name);
?>
.....

Du skal blot kalde den med det navn du gemmer den under, eks. picture.php
med name som parameter, som f.eks:

http://wsrv1/tips/picture.php?name=../images/burger-king-chart.jpg

(Her er det min interne server(wsrv1) jeg har brugt, men du skal bare gemme
den som en generel funktion, pg lave dine links derefter.

> Jeg skal indrømme at jeg ikke har et nys af begreb om php men har forstået
> at det er den eneste vej (bortset fran andet serverside) hvis man vil have
> en download box

Ja, den eneste vej er, at servere de rette headers (vha PHP/ASP eller
andet).

--
Med venlig hilsen/Best regards
Stig Johansen




ran2far (16-12-2009)
Kommentar
Fra : ran2far


Dato : 16-12-09 00:14



> Så får du en aftestet version i PHP her:
> ....
> <?php
> $name = $_GET['name'];
> $nameA = split('/',$name) ;
> $Fname = $nameA[count($nameA)-1] ;
> $Fext = split('\.',$Fname) ;
> header ('Content-type: image/'.$Fext[1]);
> header ('Content-disposition: attachment; filename="'.$Fname.'"');
> readfile($name);

Nu har jeg bikset med det frem og tilbage. Jeg kan ikke få det til at
fungere. Det jeg vil er: når man klikker på billede1 skal der komme en
download-box dialog sommer tilbyder at gemme (eller åbne) billede2. Gider du
sætte billede1, h.h.v. billede2 ind i den kode?

> Du skal blot kalde den med det navn du gemmer den under, eks. picture.php
> med name som parameter, som f.eks:
>
> http://wsrv1/tips/picture.php?name=../images/burger-king-chart.jpg
>
> (Her er det min interne server(wsrv1) jeg har brugt, men du skal bare
> gemme
> den som en generel funktion, pg lave dine links derefter.

Det link fungerer ikke hos mig.



Søg
Reklame
Statistik
Spørgsmål : 177449
Tips : 31962
Nyheder : 719565
Indlæg : 6408125
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste