Ah, I discovered what my problem was...

On Fri, 10 Jan 2014, Alan Gauld wrote:

its calling your file. You should know where your file is?

My problem was that, I know where the file is in the host's file system, and relative to my CGI program. I do not have a URL to that file.

If you want to create a png file and display it to the user then you just store the file somewhere in your web site and create an html file that has an img tag referencing that location.

Right; I am producing HTML output (using the print command, not as a file), with an img tag. The img tag has a src attribute, which must provide the URL of the referenced image file.

But I do not have that URL. I know where that file is in the file system, and relative to my CGI program. But I do not have a URL to the file. My thinking was that, if I have the URL to my program, it's pretty trivial to construct the URL to the file.

And here's where my real problem was: I had tried specifying just a relative path in the src tag, and that did not work consistently; specifically, I found that it worked in Chrome, but not Firefox.

As it turns out, since I was testing on a Windows box, os.path.relpath was (reasonably) using a '\' as the separator character (surprisingly, so does posixpath.relpath). By simply adding:

   relative_path = relative_path.replace('\\', '/')

It uses the '/' required in a URL (even a relative-path URL) and works. Chrome was forgiving of the '\'; other browsers not so much.

It was not until I posted the <img> tag into a draft of this reply that I noticed the '\' characters.

I swear I looked at this for hours without noticing this before.
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to