mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
Issue #18394: Document that cgi.FieldStorage now cleans up after its
'file' attribute properly in Python 3.4. Thanks to Marcel Hellkamp for pointing out the oversight.
This commit is contained in:
parent
50c8583492
commit
c089f70b54
2 changed files with 17 additions and 3 deletions
|
@ -142,9 +142,11 @@ If a field represents an uploaded file, accessing the value via the
|
|||
method reads the entire file in memory as bytes. This may not be what you
|
||||
want. You can test for an uploaded file by testing either the
|
||||
:attr:`~FieldStorage.filename` attribute or the :attr:`~FieldStorage.file`
|
||||
attribute. You can then read the data at leisure from the :attr:`!file`
|
||||
attribute (the :func:`~io.RawIOBase.read` and :func:`~io.IOBase.readline`
|
||||
methods will return bytes)::
|
||||
attribute. You can then read the data from the :attr:`!file`
|
||||
attribute before it is automatically closed as part of the garbage collection of
|
||||
the :class:`FieldStorage` instance
|
||||
(the :func:`~io.RawIOBase.read` and :func:`~io.IOBase.readline` methods will
|
||||
return bytes)::
|
||||
|
||||
fileitem = form["userfile"]
|
||||
if fileitem.file:
|
||||
|
@ -176,6 +178,11 @@ actually be instances of the class :class:`MiniFieldStorage`. In this case, the
|
|||
A form submitted via POST that also has a query string will contain both
|
||||
:class:`FieldStorage` and :class:`MiniFieldStorage` items.
|
||||
|
||||
.. versionchanged:: 3.4
|
||||
The :attr:`~FieldStorage.file` attribute is automatically closed upon the
|
||||
garbage collection of the creating :class:`FieldStorage` instance.
|
||||
|
||||
|
||||
Higher Level Interface
|
||||
----------------------
|
||||
|
||||
|
|
|
@ -1560,6 +1560,13 @@ Changes in the Python API
|
|||
:issue:`18011`.) Note: this change was also inadvertently applied in Python
|
||||
3.3.3.
|
||||
|
||||
* The :attr:`~cgi.FieldStorage.file` attribute is now automatically closed when
|
||||
the creating :class:`cgi.FieldStorage` instance is garbage collected. If you
|
||||
were pulling the file object out separately from the :class:`cgi.FieldStorage`
|
||||
instance and not keeping the instance alive, then you should either store the
|
||||
entire :class:`cgi.FieldStorage` instance or read the contents of the file
|
||||
before the :class:`cgi.FieldStorage` instance is garbage collected.
|
||||
|
||||
|
||||
Changes in the C API
|
||||
--------------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue