Trouble with cgi.FieldStorage() on iis/asp

Max M maxm at normik.dk
Fri Nov 9 08:08:38 EST 2001


Hi

I am using Pyhon in asp. And I am trying to download a file. I parse my form
content with the methods in the cgi module. This sort-of works. Actually the
code snippet below works fine. It's just that I cannot find the file name of
the opladed file with this example.

So I trie to use:

form = cgi.FieldStorage(fp, pdict)
Instead of:
form = cgi.parse_multipart(fp, pdict)

And then I tried to get at the data with:

form['image'].filename
and
form['image'].file

But apparently my form object is not rigth, as it cannot be indexed. so
form['image'] fails.

I have tried to read the source of the cgi modul, but I don't see why
"FieldStorage()" should have other input parameters than "parse_multipart()"
to work.

Does anybody have a clue?

Regards Max M

######################################

## form.asp ###############################
<form action="formAction.asp" method="post" enctype="multipart/form-data">
    <input type="text" name="title" value="diddi"><br>
    <input type="file" name="image"><br>
    <input type="submit" value="Send">
</form>

## formAction.asp ##########################
<%@ LANGUAGE="Python"%>
<%
import cgi
from StringIO import StringIO

def getQuery():
    # Getting the querystring parsed to 'query' dict
    qs = str(Request.ServerVariables('QUERY_STRING'))
    query = cgi.parse_qs(qs)
    return query

def getForm():
    # Getting the form type & content
    content_type = str(Request.ServerVariables('CONTENT_TYPE'))
    binaryContent = Request.BinaryRead(Request.TotalBytes)

    # Get the header & create the parameterdict to pass to parse_multipart()
    header = cgi.parse_header(content_type)
    pdict = header[1]
    pdict.update({'content-length':binaryContent[1]})

    # Parse and get form as dict
    fp = StringIO(str(binaryContent[0]))
    form = cgi.parse_multipart(fp, pdict)
    fp.close()
    return form

form = getForm()
Save the image
f = open('c:/temp/image.jpg','w+b')
f.write(form['image'][0])
f.close()

query = getQuery()
%>







More information about the Python-list mailing list