You should use the getContentType() method - look in the zope book (API - File).
 
Jonathan
----- Original Message -----
Sent: Tuesday, November 15, 2005 9:25 AM
Subject: [Zope] Problems using forms to upload files to Zope

Here's what I'm trying to accomplish:

1. The user fills out a form page with various fields
2. The user selects a file to upload
3. when the user hits submit two things should happen:
      - The file selected is uploaded
      - all the filled out form fields are written to the database (MS SQL)

This is my current problem:
The writting to the database part works fine on it's own, but when combined with the file upload I get this error

Error Type: AttributeError
Error Value: 'NoneType' object has no attribute 'headers'


My code:

*********HTML FORM**********
<html>
<h1 tal:content="template/title">title</h1>
<p>Fill out the form below to update the website with the appropriate info:</p>

<form action="">
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="16%" height="27" align="right"><strong>Your Dept: </strong></td>
    <td width="84%"><input type="text" name="department"></td>
  </tr>
  <tr>
    <td height="27" align="right"><strong>Document Title:</strong></td>
    <td><input type="text" name="title"></td>
  </tr>
  <tr>
    <td height="30" align="right"><strong>Filename:</strong></td>
    <td><input type="file" name="upload_filename" ></td>
  </tr>
  <tr>
    <td height="28" align="right"><strong>Version of File :</strong></td>
    <td><input type="text" name="version"></td>
  </tr>
  <tr>
    <td height="28" align="right"><strong>URL:</strong></td>
    <td><input type="text" name="url"></td>
  </tr>
  <tr>
    <td height="33" align="right"><strong>Owner Approved:</strong></td>
    <td><input type="text" name="ownerapp"></td>
  </tr>
  <tr>
    <td align="right"><strong>ISO Approved:</strong></td>
    <td><input type="text" name="isoapp"></td>
  </tr>
  <tr>
    <td height="41" align="right"><strong>Comments: </strong></td>
    <td rowspan="2"><textarea name="comments" cols="60" rows="5">
          </textarea></td>
  </tr>
  <tr>
    <td height="85" align="right" valign="top">&nbsp;</td>
    </tr>
  <tr>
    <td height="29" align="right"><strong>Date</strong></td>
    <td><input type="text" name="date"></td>
  </tr>
  <tr>
    <td height="62" align="right"></td>
    <td><p>
      <input type="submit" id="submit" name="submit" />
     
    </p>
      </td>
  </tr>
</table>
<p>

</form>
<hr>
<p>Return to the <a href="">News page</a></p>
</html>

******uploadForm.py********

def writeDB():
    # get sql method
    insert=container['insert_fileapps']

    REQUEST=context.REQUEST
   
    department = REQUEST.form.get('department')
    title = REQUEST.form.get('title')
    filename = REQUEST.form.get('upload_filename')

    content_type=filename.headers['Content-Type']
    if content_type.find('image')!=-1:
        context.manage_addImage(id, file, title)
    else:
        context.manage_addFile(id, file, title)
    return 'Finished'

    version = REQUEST.form.get('version')
    url = "">    ownerapp = REQUEST.form.get('ownerapp')
    isoapp = REQUEST.form.get('isoapp')
    comments = REQUEST.form.get('comments')
    date = REQUEST.form.get('date')

    filename=id
    filename = filename.split('\\')[-1]

    # call it, passing arguments
    insert( department=department, title=title, filename=filename, version=version, url="" ownerapp=ownerapp, isoapp=isoapp, comments=comments, date=date)

    # return a confirmation page
    page=container[' thanks.html']
    return page()


writeDB()

************************

Any help provided would be greatly appreciated
Thanks in advance,
mjakowlew

************************
PS: I'm sorry if I went about posting this in the wrong spot or the wrong way, I'm new to this


_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )
_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to