in reply to Re: Re: Images built on the fly do not display
in thread Images built on the fly do not display

I am curious to know why the current effort doesn't work

The problems start with this line   print header,start_html(-title=>'Bright', -bgcolor=>'#BDBDB0'); which sends a MIME type of "text/html" back to the browser, then starts an HTML page. At this point, it's a bit late to start printing image bits and expect the browser to display an image.

Read the description of header() in the CGI.pm POD, and note how to override the MIME type (aka Content-type). You want to send "image/png".

I should have given up and gone to bed hours ago.

Is it possible that there's something in $start or $finish that is fouling up the shell meta-character expansion that happens when you use the single-argument form of exec(), preventing the command from generating an image?

Try using the list form of exec(), which doesn't trigger shell meta-character expansion.

Replies are listed 'Best First'.
Re: Re: Re: Re: Images built on the fly do not display
by bart (Canon) on Jan 08, 2003 at 12:02 UTC
    Nonono, you've missed how it is supposed to work. This script invokes an external script to produce an image and save it to a temporary file. This script sends out an HTML which contains a link to this temporary file as an URL for an IMG tag. The browser is supposed to pick up the HTML and load the image in it.

    To the OP: perhaps the time difference between the saving of the file and sending the URL to the browser is too short. Perhaps the server hasn't finished saving when the webserver tries to access the file. I don't know, it's just a wild guess, really.

      yep, but wouldn't the fork,exec and waitpid() be the answer to the server trying to access the file before the saving has finished?

      We did try just looping for 30secs or so before the print img statement in order to give it some extra time

Re: Re: Re: Re: Images built on the fly do not display
by nosbod (Scribe) on Jan 08, 2003 at 12:57 UTC
    mmm, i don't think there is something wrong with $start or $finish because an image is being generated.

    We can display the previously generated images, just never the one that is produced in the current run