在Python中上传文件时读取属性丢失错误

时间:2014-04-14 18:29:21

标签: python file-upload html-form

我试图允许用户从表单上传文件到服务器,然后从我的网站显示图像。该脚本是Python,它还通过cursor.execute命令与MySQL连接。我可以上传文本表单字段,但不能上传文件内容,类似于以下报告的问题: uploading html files and using python

我可以上传所选的文件名,但不能读取;我收到一个读错误。

我的代码是:

#!/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
...

我收到该行的错误:

data = fileItem1.file.read()

错误是:

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

虽然&#34; fileitem1&#34;是输入到表单中的文件的正确句柄,因为我可以获取文件名,但是,它没有&#34;读取属性,&#34;在错误消息中指定。

我使用Bluehost作为我的服务器。文件读取属性可以被服务器关闭,还是我遗漏了一些东西,比如处理文件的另一个特殊导入?

感谢任何建议,Walter

&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培;&安培; 新说明:

问题在于表格[&#39; filePix1&#39;]&#34; file&#34;和&#34;文件名&#34;属性丢失;只有&#34;值&#34;属性存在,这只会产生文件名,而不是文件内容。

通过大量实验,我发现浏览器Sea Monkey正在导致缺少属性的问题。当我使用Firefox时,&#34;文件,&#34; &#34;文件名,&#34;和&#34;价值&#34;属性是正常的。我不知道Sea Monkey为什么不支持文件加载属性。

沃尔特

0 个答案:

没有答案