[users@httpd] When an image is replaced in the htdocs directory through a cgi script and incorporated into a new html page the new image does not get incorporated.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



PROBLEM: When an image is replaced in the htdocs directory through a cgi script and incorporated into a new html page the new image does not get incorporated.

Hi All,

I am trying to write a web app where a variable, passed with a form, is used to generate a plot, which is saved and then displayed as a static image in an html page. I am using the webform from pythonweb and generating the plot with matplotlib. I am using Apache 2.053 under Windows XP. I am keeping it real simple by simply passing an integer. The whole process works, HOWEVER, when I back page and submit a new integer value which generates a new plot and new static image, the new image does not get displayed, instead the last version of the static image (plot) is displayed (presumably from the cache). If I reload the page with the browser the updated image gets displayed otherwise the previous plot gets displayed with 2 or 3 re-submits and then eventually an updated one is displayed. It seems like Apache does not recognize a changed image and still uses the first plot I created for 2 or 3 submits or the submit does not force Apache to look for a changed file.

I am new to Apache, Pythonweb and MatplotLib although I have done similar stuff with ASP and IIS and some Python work. I have waded through the Apache and Pythonweb documentation and got nowhere. I have tried using the MOD_EXPIRES directive with Apache but this has no effect. I think this is because a new image (PNG) has been generated rather than an old one has expired. I cannot see any way with pythonweb forms to load a static html page (i.e. with cgi). I think if I had a static html page I could write out maybe I could expire that which would force Apache to load the new image file.

I have tried

<META HTTP-EQUIV=Refresh CONTENT=1>

which refreshes the page every second - this works but who would want it!

I have tried

<META HTTP-EQUIV=expires CONTENT=0>

but this does not work.

I have attached the code below, its a rework of one of the examples in pythonweb. Just copy this to the cgi-bin directory and it should work, provided matplotlib is installed. Matplotlib is available from:

http://matplotlib.sourceforge.net/

Pythonweb is available from:

http://www.pythonweb.org

Despite hours of trying I cannot get this to work, which would seem like a necessity for Pythonweb and Apache. Any help would be much appreciated.

Thanks,

Simon

---cut here

#!d:/apps/Python23/python

"The form that will not update"

import sys, re, os
sys.path.append('../')
sys.path.append('../../')

import web.error; web.error.handle(handler='browser', output='debug', format='html')
import web, web.form, web.form.field.basic, web.util
import web.form.field.typed
from pylab import *

class ExampleForm(web.form.Form):
def setup(self): self.addField(web.form.field.typed.Integer('myval', default=6, required=True)) # The preffered way of adding submit buttons is as actions so Submit buttons are normally not used.
       self.addAction('Validate This Form')

# Print the HTTP Header
print web.header('text/html')

# Create a form
exampleForm = ExampleForm('form', os.environ['SCRIPT_NAME'], 'get')

if len(web.cgi) > 0: # Form submitted
   # Populate form with the values from get.
# Populate the form exampleForm.populate(web.cgi) # Process the form (Validate) if exampleForm.valid(): # Grab the desired value, from the form
       myval=exampleForm['myval'].value
# Create the plot, saved as a png in the htdocs directory
       myarray=[myval,4,9,16]
       print myarray
       plot([1,2,3,4], myarray, 'ro')
       axis([0, 6, 0, 20])
       savefig('../htdocs/plot.png')
print "<hmtl><body><div align=center><img src=/plot.png alt=theplot></div></body></html>"

else:
print "<html><head><title>noupdate</title></head><body>\n<h1>Input integer 0-10</h1>%s\n<hr></body></html>"%(exampleForm.html())

---end cut

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
  "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux