/ 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
vise et billede hentet fra en anden server
Fra : Henrik Stidsen


Dato : 29-11-03 16:24

Jeg sidder og roder lidt med noget proxy lign. PHP script.
Problemet er sådan set at jeg ikke kan få den til at vise billeder.

Jeg har prøvet forskellige ting, hente via en socket, include, fopen
osv. Intet virker...

Det er ikke fordi jeg ikke sender den korrekte header.

--
..: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
"Nogen gange kan ens liv godt føles som et puslespil, hvor brikkerne
bevæger sig og skifter farve og størrelse når man rører dem."
- Emme, http://emme.dk/2003_11_01_arkiv.html#106840650828914899

 
 
Jacob Atzen (29-11-2003)
Kommentar
Fra : Jacob Atzen


Dato : 29-11-03 16:28

Henrik Stidsen <nospamforme@hs235.dk> writes:

> Jeg sidder og roder lidt med noget proxy lign. PHP script.
> Problemet er sådan set at jeg ikke kan få den til at vise billeder.
>
> Jeg har prøvet forskellige ting, hente via en socket, include, fopen
> osv. Intet virker...
>
> Det er ikke fordi jeg ikke sender den korrekte header.

<http://catb.org/~esr/faqs/smart-questions.html>

--
Med venlig hilsen
- Jacob Atzen

Henrik Stidsen (29-11-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 29-11-03 20:55

Jacob Atzen <jacob@aub.dk> wrote in
news:x6xekvrtcs5.fsf@berling.diku.dk

>> Jeg sidder og roder lidt med noget proxy lign. PHP script.
>> Problemet er sådan set at jeg ikke kan få den til at vise
>> billeder.
>>
>> Jeg har prøvet forskellige ting, hente via en socket, include,
>> fopen osv. Intet virker...
>>
>> Det er ikke fordi jeg ikke sender den korrekte header.
>
> <http://catb.org/~esr/faqs/smart-questions.html>

Prøver du at sige at du ikke forstod spørgsmålet eller at du mener
det er for dårligt beskrevet ?

Kan da godt prøve med en lidt mere detaljeret beskrivelse.

Jeg skal have en PHP fil til at sende et billede fra en anden server
til klienten, altså en slags proxy.

Jeg har prøvet at få scriptet til at åbne en socket og hente det på
den måde (så får man headers med), jeg har prøvet at include det med
include(), jeg har prøvet at åbne det med fopen() og på den måde
hente det.
Intet virker, hverken IE, Mozilla eller Opera kan vise billedet.
Hvad kan jeg have gjort galt ? - er der nogen der har et tip til
hvordan det skal gøres smartest ?

Jeg har sørger for at der sendes korrekte headers.

--
..: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
"Nogen gange kan ens liv godt føles som et puslespil, hvor brikkerne
bevæger sig og skifter farve og størrelse når man rører dem."
- Emme, http://emme.dk/2003_11_01_arkiv.html#106840650828914899

Leonard (29-11-2003)
Kommentar
Fra : Leonard


Dato : 29-11-03 22:01

Henrik Stidsen <nospamforme@hs235.dk> wrote:

>Prøver du at sige at du ikke forstod spørgsmålet eller at du mener
>det er for dårligt beskrevet ?

Vis noget kode ellers er det umuligt at gætte hvad du har gang i.
--
mvh Leonard http://leonard.dk/
Det er en muldvarp på motorcykel!
Hvad er det, der er småt, sort og meget hurtigt?
http://usenet.dk/netikette/citatteknik.html

Timo J (30-11-2003)
Kommentar
Fra : Timo J


Dato : 30-11-03 01:45

Hmm grøn til Php som jeg er vil jeg foreslå to ting..

!) Generer det i html, der er intet i vejen med at vise et billede ligende
på en anden server..

2) Lav en temp, folder og slet det efter x timer..


--
Venligst / Best Regards

Timo Jattu

Scandinavian Diving Import
WWW.S-D-I.DK
(+45) 2845 5040

"Henrik Stidsen" <nospamforme@hs235.dk> skrev i en meddelelse
news:Xns9442D4BD93CFCHS235dk@130.225.247.90...
> Jacob Atzen <jacob@aub.dk> wrote in
> news:x6xekvrtcs5.fsf@berling.diku.dk
>
> >> Jeg sidder og roder lidt med noget proxy lign. PHP script.
> >> Problemet er sådan set at jeg ikke kan få den til at vise
> >> billeder.
> >>
> >> Jeg har prøvet forskellige ting, hente via en socket, include,
> >> fopen osv. Intet virker...
> >>
> >> Det er ikke fordi jeg ikke sender den korrekte header.
> >
> > <http://catb.org/~esr/faqs/smart-questions.html>
>
> Prøver du at sige at du ikke forstod spørgsmålet eller at du mener
> det er for dårligt beskrevet ?
>
> Kan da godt prøve med en lidt mere detaljeret beskrivelse.
>
> Jeg skal have en PHP fil til at sende et billede fra en anden server
> til klienten, altså en slags proxy.
>
> Jeg har prøvet at få scriptet til at åbne en socket og hente det på
> den måde (så får man headers med), jeg har prøvet at include det med
> include(), jeg har prøvet at åbne det med fopen() og på den måde
> hente det.
> Intet virker, hverken IE, Mozilla eller Opera kan vise billedet.
> Hvad kan jeg have gjort galt ? - er der nogen der har et tip til
> hvordan det skal gøres smartest ?
>
> Jeg har sørger for at der sendes korrekte headers.
>
> --
> .: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
> "Nogen gange kan ens liv godt føles som et puslespil, hvor brikkerne
> bevæger sig og skifter farve og størrelse når man rører dem."
> - Emme, http://emme.dk/2003_11_01_arkiv.html#106840650828914899



Thomas Lindgaard (30-11-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 30-11-03 13:47

[snip]

> 2) Lav en temp, folder og slet det efter x timer..

Det var også sådan en løsning jeg umiddelbart kom på da jeg læste
indlægget...

<?php

// Hent billede (kode nupset fra http://dk.php.net/fread)
$f = fopen('http://masserafbilleder/1.jpg', 'rb');
$image = '';
do {
$data = fread($f, 8192);
if ( strlen($data) == 0 ) {
break;
}
$image .= $data;
} while ( true );
fclose($f);

// Gem billede på disk
$f = fopen('tmp/1.jpg', 'wb');
fwrite($f, $image);
fclose($f);

// Servér det for klienten
print '<html><body><img src="tmp/1.jpg"></body></html>';

?>

Det er naturligvis 100% utestet.

Jeg går ud fra at det du egentlig gerne vil er noget i retning af:

<?php

// Hent billede som før

// Send billede til klienten
Header('den rigtige header som jeg ikke kender');
print $image;

?>

.... men hvordan gør du i virkeligheden?

Mvh.
/Thomas

Henrik Stidsen (30-11-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 30-11-03 20:07

"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in
news:pan.2003.11.30.12.46.52.922789@it-snedkeren.BLACK_HOLE.dk

> Jeg går ud fra at det du egentlig gerne vil er noget i retning af:
>
> <?php
>
> // Hent billede som før
>
> // Send billede til klienten
> Header('den rigtige header som jeg ikke kender');
> print $image;
>
> ?>

Præcis hvad jeg gerne vil.

> ... men hvordan gør du i virkeligheden?

Okay, her kommer det hele, det er ikke særlig elegant og det æder
også CPU resourcer så man tror det er løgn...

<?php
if(@$_SERVER["QUERY_STRING"])
{
   // Splitter URL´en
   $url = eregi_replace("^http://", "", $_SERVER["QUERY_STRING"]);
   $host = strtolower(eregi_replace("/.*", "", $url));
   $path = eregi_replace("^".$host, "", $url);
   if($path == "") $path = "/";

   if(ereg(":", $host))
   {
      $port = ereg_replace(".*:", "", $host);
      $host = ereg_replace(":".$port."$", "", $host);
   }
   else $port = 80;

   header("Content-Type: image/gif");
//   include("http://$url");

   $stream = fopen("http://$url", 'r');
   fpassthru($stream);
}
?>

Grunden til at jeg sender en image/gif som header er at jeg som en
start forsøger at få det til at virke bare med et gif billede.

Hvis jeg er heldig får jeg en blank side hvor der står "GIF89" og et
par sjove tegn...

--
..: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
"Nogen gange kan ens liv godt føles som et puslespil, hvor brikkerne
bevæger sig og skifter farve og størrelse når man rører dem."
- Emme, http://emme.dk/2003_11_01_arkiv.html#106840650828914899

Thomas Lindgaard (01-12-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 01-12-03 01:21

>> Jeg går ud fra at det du egentlig gerne vil er noget i retning af:
>>
>> <?php
>>
>> // Hent billede som før
>>
>> // Send billede til klienten
>> Header('den rigtige header som jeg ikke kender');
>> print $image;
>>
>> ?>
>
> Præcis hvad jeg gerne vil.

[snip - noget kode]

Hmm... efter lidt kiggen rundt på php.net:

<?php

$image = "http://images.ucomics.com/comics/ga/2003/ga031130.gif";
header("Content-Type: image/gif");
readfile($image);

?>

Mvh.
/Thomas

Henrik Stidsen (02-12-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 02-12-03 00:10

"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in
news:pan.2003.12.01.00.20.39.378077@it-snedkeren.BLACK_HOLE.dk

> Hmm... efter lidt kiggen rundt på php.net:

Hmmm, hvor fandt du den ? - jeg syns da nok jeg har kigget på masser
af sider på php.net :/

Men anyway, det virker. Så skal jeg "bare" lige havde den til at
sende den rigtige content type.

--
..: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
"Nogen gange kan ens liv godt føles som et puslespil, hvor brikkerne
bevæger sig og skifter farve og størrelse når man rører dem."
- Emme, http://emme.dk/2003_11_01_arkiv.html#106840650828914899

Thomas Lindgaard (02-12-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 02-12-03 00:52

On Mon, 01 Dec 2003 23:10:21 +0000, Henrik Stidsen wrote:

> "Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in
> news:pan.2003.12.01.00.20.39.378077@it-snedkeren.BLACK_HOLE.dk
>
>> Hmm... efter lidt kiggen rundt på php.net:
>
> Hmmm, hvor fandt du den ? - jeg syns da nok jeg har kigget på masser
> af sider på php.net :/

Mjaeh... jeg fandt den jo ikke lige i sin endelige form :) - men der er jo
et eksempel ala det du gerne ville på php.net/fpassthru og i teksten
ovenover står følgende:

If you just want to dump the contents of a file to the output buffer,
without first modifying it or seeking to a particular offset, you may
want to use the readfile(), which saves you the fopen() call.

> Men anyway, det virker. Så skal jeg "bare" lige havde den til at
> sende den rigtige content type.

Har du overvejet at bruge parse_url()? Noget i retning af:

<?php

$url = 'http://en.server.dk/her/ligger/etbillede.gif';
$parsed_url = parse_url($url);
print $parsed_url['path'];

?>

Extension fås vist nok ved at klippe fra sidste punktum og frem i
$parsed_url['path']. (Men det vil jeg ikke lige hænges op på... :)

Mvh.
/Thomas

Henrik Stidsen (02-12-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 02-12-03 13:43

"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in
news:pan.2003.12.01.23.51.59.897153@it-snedkeren.BLACK_HOLE.dk

>> Hmmm, hvor fandt du den ? - jeg syns da nok jeg har kigget på
>> masser af sider på php.net :/
>
> Mjaeh... jeg fandt den jo ikke lige i sin endelige form :) - men
> der er jo et eksempel ala det du gerne ville på
> php.net/fpassthru og i teksten ovenover står følgende:

Og det ironiske her er så at jeg netop har kigget på den side :/

>> Men anyway, det virker. Så skal jeg "bare" lige havde den til
>> at sende den rigtige content type.
>
> Har du overvejet at bruge parse_url()? Noget i retning af:

Næ, har tænkt mig at gøre noget i stil med:
   $url = "http://en.server/sti/til/billede.jpeg";
   preg_match("/[^\.\/]+$/i", $url, $ext);

Så har vi filens extension i i $ext[0] :)

Iøvrigt kun let omskrevet fra et eksempel på
http://dk.php.net/preg_match


--
..: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
"Nogen gange kan ens liv godt føles som et puslespil, hvor brikkerne
bevæger sig og skifter farve og størrelse når man rører dem."
- Emme, http://emme.dk/2003_11_01_arkiv.html#106840650828914899

Thomas Lindgaard (02-12-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 02-12-03 23:38

"Henrik Stidsen" <nospamforme@hs235.dk> wrote in message
news:Xns94458B96051FHS235dk@130.225.247.90...

> Næ, har tænkt mig at gøre noget i stil med:
> $url = "http://en.server/sti/til/billede.jpeg";
> preg_match("/[^\.\/]+$/i", $url, $ext);
>
> Så har vi filens extension i i $ext[0] :)

Det er så betinget af at der ikke er noget . senere i url'en, f.eks.
http://en.server/billede.jpg?bla=hej.punktum - men det går jeg ikke ud fra
at du kommer ud for i din proxy.

Hyggehej
/Thomas



Henrik Stidsen (03-12-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 03-12-03 01:37

"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in
news:bqj48j$k4q$1@sunsite.dk

> Det er så betinget af at der ikke er noget . senere i url'en,
> f.eks. http://en.server/billede.jpg?bla=hej.punktum - men det
> går jeg ikke ud fra at du kommer ud for i din proxy.

Nej det skulle ikke gerne ske eftersom det heromtalte script *kun*
skal tage sig af billeder. Der er et andet der tager sig af alt det
andet.

--
..: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
"Nogen gange kan ens liv godt føles som et puslespil, hvor brikkerne
bevæger sig og skifter farve og størrelse når man rører dem."
- Emme, http://emme.dk/2003_11_01_arkiv.html#106840650828914899

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste