1

I am trying to allow a user to upload files to a server from a form, and then display images from my website. The script is Python, which also interfaces to MySQL via cursor.execute commands. I can upload text form fields, but not the file contents, similar to the problem reported at: uploading html files and using python

I can upload the selected file name, but not read it; I get a read error.

My code is:

#!/home2/snowbear/python/Python-2.7.2/python 
import cgi
# Import smtplib for the actual sending function. 
import smtplib
import shutil
import datetime 
import os
import sys, traceback, re
# Helps troubleshoot python script. 
import cgitb; cgitb.enable()
# Import mysql database program. 
import mysql.connector
# Windows needs stdio set for binary mode.
try: 
  import msvcrt
  msvcrt.setmode (0, os.O_BINARY) # stdin  = 0
  msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
  message = "No Windows msvcrt to import"
  pass
  print '<form name="PB_Form" action="PB_resubmit.py" method="post" enctype="multipart/form-data">'
...
# Get form values. 
...
  if form.has_key("filePix1") and form["filePix1"].value != "": 
    txtImage1 = form['filePix1'].value
    fileItem1 = form['filePix1']
    if not fileItem1.file:
      print "<br><center>No fileItem1: %s</center>" % fileItem1
    else: 
      data = fileItem1.file.read()
      objFile = open(txtImage1, "w+")
      objFile.write(data)
      objFile.close()
  else:
    newImage1 = False
...

I get an error for the line:

data = fileItem1.file.read()

The error is:

<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'read'
      args = ("'NoneType' object has no attribute 'read'",)
      message = "'NoneType' object has no attribute 'read'" 

Although "fileitem1" is a proper handle to the file entered into the form, since I can get the file name, it however, does not have a "read attribute," as specified in the error message.

I'm using Bluehost for my server. Could the file-read attribute be turned off by the server, or am I missing something, such as another special import for handling files?

Thanks for any suggestions, Walter

&&&&&&&&&&&&&&&& New note:

The problem was that form['filePix1'] "file" and "filename" attributes were missing; only the "value" attribute existed, and this would only produce the file name, not the file contents.

With much experimenting, I discovered that the browser, Sea Monkey, is causing the problem of missing attributes. When I used Firefox, the "file," "filename," and "value" attributes were normal. I have no idea why Sea Monkey doesn't support file loading attributes.

Walter

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.