/usr/share/doc/libapache2-mod-python-doc/doc-html/pyapi-util-fstor-examples.html is in libapache2-mod-python-doc 3.3.1-11ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="modpython.css" type='text/css' />
<link rel="first" href="modpython.html" title='Mod_python Manual' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="pyapi-util-fstor-fld.html" />
<link rel="prev" href="pyapi-util-fstor.html" />
<link rel="parent" href="pyapi-util.html" />
<link rel="next" href="pyapi-util-fstor-fld.html" />
<meta name='aesop' content='information' />
<title>4.6.2 FieldStorage Examples</title>
</head>
<body>
<DIV CLASS="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="4.6.1 FieldStorage class"
href="pyapi-util-fstor.html"><img src='previous.png'
border='0' height='32' alt='Previous Page' width='32' /></A></td>
<td class='online-navigation'><a rel="parent" title="4.6 util - Miscellaneous"
href="pyapi-util.html"><img src='up.png'
border='0' height='32' alt='Up One Level' width='32' /></A></td>
<td class='online-navigation'><a rel="next" title="4.6.3 Field class"
href="pyapi-util-fstor-fld.html"><img src='next.png'
border='0' height='32' alt='Next Page' width='32' /></A></td>
<td align="center" width="100%">Mod_python Manual</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
href="contents.html"><img src='contents.png'
border='0' height='32' alt='Contents' width='32' /></A></td>
<td class='online-navigation'><img src='blank.png'
border='0' height='32' alt='' width='32' /></td>
<td class='online-navigation'><a rel="index" title="Index"
href="genindex.html"><img src='index.png'
border='0' height='32' alt='Index' width='32' /></A></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="pyapi-util-fstor.html">4.6.1 FieldStorage class</A>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="pyapi-util.html">4.6 util - Miscellaneous</A>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="pyapi-util-fstor-fld.html">4.6.3 Field class</A>
</div>
<hr /></div>
</DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION006620000000000000000"></A><A NAME="pyapi-util-fstor-examples"></A>
<BR>
4.6.2 FieldStorage Examples
</H2>
<P>
The following examples demonstrate how to use the <var>file_callback</var>
parameter of the <tt class="class">FieldStorage</tt> constructor to control file
object creation. The <tt class="class">Storage</tt> classes created in both
examples derive from FileType, thereby providing extended file
functionality.
<P>
These examples are provided for demonstration purposes only. The
issue of temporary file location and security must be considered
when providing such overrides with mod_python in production use.
<P>
<DL>
<DT><STRONG>Simple file control using class constructor</STRONG></DT>
<DD><P>
This example uses the <tt class="class">FieldStorage</tt> class constructor to
create the file object, allowing simple control. It is not
advisable to add class variables to this if serving multiple sites
from apache. In that case use the factory method instead.
<P>
<div class="verbatim"><pre>
class Storage(file):
def __init__(self, advisory_filename):
self.advisory_filename = advisory_filename
self.delete_on_close = True
self.already_deleted = False
self.real_filename = '/someTempDir/thingy-unique-thingy'
super(Storage, self).__init__(self.real_filename, 'w+b')
def close(self):
if self.already_deleted:
return
super(Storage, self).close()
if self.delete_on_close:
self.already_deleted = True
os.remove(self.real_filename)
request_data = util.FieldStorage(request, keep_blank_values=True, file_callback=Storage)
</pre></div>
<P>
</DD>
<DT><STRONG>Advanced file control using object factory</STRONG></DT>
<DD><P>
Using a object factory can provide greater control over the
constructor parameters.
<P>
<div class="verbatim"><pre>
import os
class Storage(file):
def __init__(self, directory, advisory_filename):
self.advisory_filename = advisory_filename
self.delete_on_close = True
self.already_deleted = False
self.real_filename = directory + '/thingy-unique-thingy'
super(Storage, self).__init__(self.real_filename, 'w+b')
def close(self):
if self.already_deleted:
return
super(Storage, self).close()
if self.delete_on_close:
self.already_deleted = True
os.remove(self.real_filename)
class StorageFactory:
def __init__(self, directory):
self.dir = directory
def create(self, advisory_filename):
return Storage(self.dir, advisory_filename)
file_factory = StorageFactory(someDirectory)
[...sometime later...]
request_data = util.FieldStorage(request, keep_blank_values=True,
file_callback=file_factory.create)
</pre></div>
<P>
</DD>
</DL>
<P>
<DIV CLASS="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="4.6.1 FieldStorage class"
href="pyapi-util-fstor.html"><img src='previous.png'
border='0' height='32' alt='Previous Page' width='32' /></A></td>
<td class='online-navigation'><a rel="parent" title="4.6 util - Miscellaneous"
href="pyapi-util.html"><img src='up.png'
border='0' height='32' alt='Up One Level' width='32' /></A></td>
<td class='online-navigation'><a rel="next" title="4.6.3 Field class"
href="pyapi-util-fstor-fld.html"><img src='next.png'
border='0' height='32' alt='Next Page' width='32' /></A></td>
<td align="center" width="100%">Mod_python Manual</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
href="contents.html"><img src='contents.png'
border='0' height='32' alt='Contents' width='32' /></A></td>
<td class='online-navigation'><img src='blank.png'
border='0' height='32' alt='' width='32' /></td>
<td class='online-navigation'><a rel="index" title="Index"
href="genindex.html"><img src='index.png'
border='0' height='32' alt='Index' width='32' /></A></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="pyapi-util-fstor.html">4.6.1 FieldStorage class</A>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="pyapi-util.html">4.6 util - Miscellaneous</A>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="pyapi-util-fstor-fld.html">4.6.3 Field class</A>
</div>
</div>
<hr />
<span class="release-info">Release 3.3.1, documentation updated on January 29, 2007.</span>
</DIV>
<!--End of Navigation Panel-->
</BODY>
</HTML>
|