[Zope] Problem with upload object

Andrew Davidson thishightoride@hotmail.com
Tue, 5 Nov 2002 10:20:31 -0500


This is a multi-part message in MIME format.

------=_NextPart_000_0030_01C284B4.F8241850
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

I don't think that the object that I'm grabbing is a file upload object =
because I get an AttributeError when I try to access the 'filename' =
attribute, and when I reference the object name, it return the path of =
the uploaded file instead of the actual file.  My Zope file then =
contains only a string of text that is the path that the user submitted. =
 There's probably something obvious that I'm not doing, but I've read =
the documentation, and that hasn't helped.  I'm using Ie6, zope is =
runnning on Solaris8.  See below for the code and error.

Your help is greatly appreciated, thanks.

Andrew

The form:

<form action=3D"Upload_FileAction" method=3D"POST">
<p> Select File to Upload:
<input type=3D"file" name=3D"uploaded" enctype=3D"multipart/form-data">
</p>
<input type=3D"submit" value=3D"Upload File">
</p>
</form>

The method:

<dtml-call =
"manage_addProduct['OFSP'].manage_addFile(uploaded.filename,uploaded)">

The error log:

Exception traceback
      Time 2002/11/05 10:16:31.529 US/Eastern=20
      User Name (User Id) admin (admin)=20
      Request URL http://127.0.0.1:8080/Krude/Upload_FileAction=20
      Exception Type AttributeError=20
      Exception Value filename=20

Traceback (innermost last):=20

  a.. Module ZPublisher.Publish, line 98, in publish=20
  b.. Module ZPublisher.mapply, line 88, in mapply=20
  c.. Module ZPublisher.Publish, line 39, in call_object=20
  d.. Module OFS.DTMLMethod, line 126, in __call__=20
  e.. Module DocumentTemplate.DT_String, line 474, in __call__=20
  f.. Module DocumentTemplate.DT_Util, line 201, in eval
  __traceback_info__: uploaded=20
  g.. Module <string>, line 2, in f=20
AttributeError: filename=20



form
      uploaded 'C:\\DATA\\Programming\\Norm & Tom - php\\test.html'=20

cookies
      tree-s 'eJyLjlZ3hANPW3UdhWiEiHOWq616LBAAAL3mChA'=20
      tutorialExamplesURL 'http://127.0.0.1:8080/Tutorial/examples'=20

lazy items
      SESSION <bound method SessionDataManager.getSessionData of =
<SessionDataManager instance at bc55a8>>=20

other
      AUTHENTICATION_PATH ''=20
      URL1 'http://127.0.0.1:8080/Krude'=20
      BASE3 'http://127.0.0.1:8080/Krude/Upload_FileAction'=20
      URL2 'http://127.0.0.1:8080'=20
      BASE1 'http://127.0.0.1:8080'=20
      SERVER_URL 'http://127.0.0.1:8080'=20
      PUBLISHED <DTMLMethod instance at f20d40>=20
      URL 'http://127.0.0.1:8080/Krude/Upload_FileAction'=20
      AUTHENTICATED_USER admin=20
      BASE2 'http://127.0.0.1:8080/Krude'=20
      TraversalRequestNameStack []=20
      uploaded 'C:\\DATA\\Programming\\Norm & Tom - php\\test.html'=20
      URL0 http://127.0.0.1:8080/Krude/Upload_FileAction=20
      URL1 http://127.0.0.1:8080/Krude=20
      URL2 http://127.0.0.1:8080=20
      BASE0 http://127.0.0.1:8080=20
      BASE1 http://127.0.0.1:8080=20
      BASE2 http://127.0.0.1:8080/Krude=20
      BASE3 http://127.0.0.1:8080/Krude/Upload_FileAction=20

environ
      HTTP_ACCEPT_ENCODING 'gzip, deflate'=20
      CONTENT_TYPE 'application/x-www-form-urlencoded'=20
      PATH_TRANSLATED '/Krude/Upload_FileAction'=20
      HTTP_ACCEPT 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, =
application/vnd.ms-excel, application/vnd.ms-powerpoint, =
application/msword, application/x-gsarcade-launch, */*'=20
      HTTP_COOKIE =
'tutorialExamplesURL=3D"http://127.0.0.1:8080/Tutorial/examples"; =
tree-s=3D"eJyLjlZ3hANPW3UdhWiEiHOWq616LBAAAL3mChA"'=20
      HTTP_ACCEPT_LANGUAGE 'en-ca'=20
      GATEWAY_INTERFACE 'CGI/1.1'=20
      SERVER_PORT '8080'=20
      HTTP_USER_AGENT 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT =
5.0)'=20
      CONTENT_LENGTH '67'=20
      REMOTE_ADDR '192.168.2.10'=20
      channel.creation_time 1036509387=20
      SERVER_PROTOCOL 'HTTP/1.1'=20
      PATH_INFO '/Krude/Upload_FileAction'=20
      HTTP_HOST '127.0.0.1:8080'=20
      REQUEST_METHOD 'POST'=20
      SCRIPT_NAME ''=20
      SERVER_SOFTWARE 'Zope/(Zope 2.6.0 (binary release, python 2.1, =
solaris-2.8-sparc), python 2.1.3, sunos5) ZServer/1.1b1'=20
      HTTP_CACHE_CONTROL 'no-cache'=20
      CONNECTION_TYPE 'Keep-Alive'=20
      HTTP_REFERER 'http://127.0.0.1:8080/Krude/Upload_FileForm'=20
      SERVER_NAME 'gratuitous'=20





------=_NextPart_000_0030_01C284B4.F8241850
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2719.2200" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>I don't think that the object that I'm =
grabbing is=20
a file upload object because I get an AttributeError when I try to =
access the=20
'filename' attribute, and when I reference the object name, it return =
the path=20
of the uploaded file instead of the actual file.&nbsp; My Zope file then =

contains only a string of text that is the path that the user =
submitted.&nbsp;=20
There's probably something obvious that I'm not doing, but I've read the =

documentation, and that hasn't helped.&nbsp; I'm using Ie6, zope is =
runnning on=20
Solaris8.&nbsp; See below for the code and error.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Your help is greatly appreciated,=20
thanks.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Andrew</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>The form:</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>&lt;form =
action=3D"Upload_FileAction"=20
method=3D"POST"&gt;<BR>&lt;p&gt; Select File to Upload:<BR>&lt;input =
type=3D"file"=20
name=3D"uploaded" =
enctype=3D"multipart/form-data"&gt;<BR>&lt;/p&gt;</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>&lt;input type=3D"submit" =
value=3D"Upload=20
File"&gt;<BR>&lt;/p&gt;<BR>&lt;/form&gt;<BR></FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>The method:</FONT></DIV><FONT=20
face=3D"Courier New"><FONT size=3D2><FONT face=3DArial>
<DIV><BR><FONT face=3D"Courier New">&lt;dtml-call=20
"manage_addProduct['OFSP'].manage_addFile(uploaded.filename,uploaded)"&gt=
;</FONT></DIV>
<DIV><FONT face=3D"Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New">The error log:</FONT></DIV>
<DIV><FONT face=3D"Courier New"></FONT>&nbsp;</DIV>
<DIV>
<H3><FONT face=3D"Courier New">Exception traceback</FONT></H3>
<DIV>
<DIV>
<TABLE>
  <TBODY>
  <TR>
    <TH vAlign=3Dtop align=3Dleft><FONT face=3D"Courier =
New">Time</FONT></TH>
    <TD><FONT face=3D"Courier New">2002/11/05 10:16:31.529=20
  US/Eastern</FONT></TD></TR>
  <TR>
    <TH vAlign=3Dtop align=3Dleft><FONT face=3D"Courier New">User Name =
(User=20
      Id)</FONT></TH>
    <TD><FONT face=3D"Courier New">admin (admin)</FONT></TD></TR>
  <TR>
    <TH vAlign=3Dtop align=3Dleft><FONT face=3D"Courier New">Request =
URL</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">http://127.0.0.1:8080/Krude/Upload_FileAction</FONT></TD></TR>
  <TR>
    <TH vAlign=3Dtop align=3Dleft><FONT face=3D"Courier New">Exception=20
Type</FONT></TH>
    <TD><FONT face=3D"Courier New">AttributeError</FONT></TD></TR>
  <TR>
    <TH vAlign=3Dtop align=3Dleft><FONT face=3D"Courier New">Exception=20
    Value</FONT></TH>
    <TD><FONT face=3D"Courier =
New">filename</FONT></TD></TR></TBODY></TABLE>
<DIV>
<P><FONT face=3D"Courier New">Traceback (innermost last): </FONT>
<UL>
  <LI><FONT face=3D"Courier New">Module ZPublisher.Publish, line 98, in =
publish=20
  </FONT>
  <LI><FONT face=3D"Courier New">Module ZPublisher.mapply, line 88, in =
mapply=20
  </FONT>
  <LI><FONT face=3D"Courier New">Module ZPublisher.Publish, line 39, in=20
  call_object </FONT>
  <LI><FONT face=3D"Courier New">Module OFS.DTMLMethod, line 126, in =
__call__=20
  </FONT>
  <LI><FONT face=3D"Courier New">Module DocumentTemplate.DT_String, line =
474, in=20
  __call__ </FONT>
  <LI><FONT face=3D"Courier New">Module DocumentTemplate.DT_Util, line =
201, in=20
  eval<BR>__traceback_info__: uploaded </FONT>
  <LI><FONT face=3D"Courier New">Module &lt;string&gt;, line 2, in f=20
</FONT></LI></UL><FONT face=3D"Courier New">AttributeError: filename =
</FONT>
<P></P></DIV>
<P><FONT face=3D"Courier New"></FONT>&nbsp;</P>
<DIV>
<H3><FONT face=3D"Courier New">form</FONT></H3>
<TABLE>
  <TBODY>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">uploaded</FONT></TH>
    <TD><FONT face=3D"Courier New">'C:\\DATA\\Programming\\Norm &amp; =
Tom -=20
      php\\test.html'</FONT></TD></TR></TBODY></TABLE>
<H3><FONT face=3D"Courier New">cookies</FONT></H3>
<TABLE>
  <TBODY>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">tree-s</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">'eJyLjlZ3hANPW3UdhWiEiHOWq616LBAAAL3mChA'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">tutorialExamplesURL</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">'http://127.0.0.1:8080/Tutorial/examples'</FONT></TD></TR></TBODY></=
TABLE>
<H3><FONT face=3D"Courier New">lazy items</FONT></H3>
<TABLE>
  <TBODY>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">SESSION</FONT></TH>
    <TD><FONT face=3D"Courier New">&lt;bound method=20
      SessionDataManager.getSessionData of &lt;SessionDataManager =
instance at=20
      bc55a8&gt;&gt;</FONT></TD></TR></TBODY></TABLE>
<H3><FONT face=3D"Courier New">other</FONT></H3>
<TABLE>
  <TBODY>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">AUTHENTICATION_PATH</FONT></TH>
    <TD><FONT face=3D"Courier New">''</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">URL1</FONT></TH>
    <TD><FONT face=3D"Courier =
New">'http://127.0.0.1:8080/Krude'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">BASE3</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">'http://127.0.0.1:8080/Krude/Upload_FileAction'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">URL2</FONT></TH>
    <TD><FONT face=3D"Courier =
New">'http://127.0.0.1:8080'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">BASE1</FONT></TH>
    <TD><FONT face=3D"Courier =
New">'http://127.0.0.1:8080'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">SERVER_URL</FONT></TH>
    <TD><FONT face=3D"Courier =
New">'http://127.0.0.1:8080'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">PUBLISHED</FONT></TH>
    <TD><FONT face=3D"Courier New">&lt;DTMLMethod instance at=20
    f20d40&gt;</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">URL</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">'http://127.0.0.1:8080/Krude/Upload_FileAction'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">AUTHENTICATED_USER</FONT></TH>
    <TD><FONT face=3D"Courier New">admin</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">BASE2</FONT></TH>
    <TD><FONT face=3D"Courier =
New">'http://127.0.0.1:8080/Krude'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">TraversalRequestNameStack</FONT></TH>
    <TD><FONT face=3D"Courier New">[]</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">uploaded</FONT></TH>
    <TD><FONT face=3D"Courier New">'C:\\DATA\\Programming\\Norm &amp; =
Tom -=20
      php\\test.html'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">URL0</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">http://127.0.0.1:8080/Krude/Upload_FileAction</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">URL1</FONT></TH>
    <TD><FONT face=3D"Courier =
New">http://127.0.0.1:8080/Krude</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">URL2</FONT></TH>
    <TD><FONT face=3D"Courier =
New">http://127.0.0.1:8080</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">BASE0</FONT></TH>
    <TD><FONT face=3D"Courier =
New">http://127.0.0.1:8080</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">BASE1</FONT></TH>
    <TD><FONT face=3D"Courier =
New">http://127.0.0.1:8080</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">BASE2</FONT></TH>
    <TD><FONT face=3D"Courier =
New">http://127.0.0.1:8080/Krude</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">BASE3</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">http://127.0.0.1:8080/Krude/Upload_FileAction</FONT></TD></TR></TBOD=
Y></TABLE>
<H3><FONT face=3D"Courier New">environ</FONT></H3>
<TABLE>
  <TBODY>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">HTTP_ACCEPT_ENCODING</FONT></TH>
    <TD><FONT face=3D"Courier New">'gzip, deflate'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">CONTENT_TYPE</FONT></TH>
    <TD><FONT=20
  face=3D"Courier =
New">'application/x-www-form-urlencoded'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">PATH_TRANSLATED</FONT></TH>
    <TD><FONT face=3D"Courier =
New">'/Krude/Upload_FileAction'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">HTTP_ACCEPT</FONT></TH>
    <TD><FONT face=3D"Courier New">'image/gif, image/x-xbitmap, =
image/jpeg,=20
      image/pjpeg, application/vnd.ms-excel, =
application/vnd.ms-powerpoint,=20
      application/msword, application/x-gsarcade-launch, =
*/*'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">HTTP_COOKIE</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">'tutorialExamplesURL=3D"http://127.0.0.1:8080/Tutorial/examples";=20
      =
tree-s=3D"eJyLjlZ3hANPW3UdhWiEiHOWq616LBAAAL3mChA"'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">HTTP_ACCEPT_LANGUAGE</FONT></TH>
    <TD><FONT face=3D"Courier New">'en-ca'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">GATEWAY_INTERFACE</FONT></TH>
    <TD><FONT face=3D"Courier New">'CGI/1.1'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">SERVER_PORT</FONT></TH>
    <TD><FONT face=3D"Courier New">'8080'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">HTTP_USER_AGENT</FONT></TH>
    <TD><FONT face=3D"Courier New">'Mozilla/4.0 (compatible; MSIE 6.0; =
Windows=20
      NT 5.0)'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">CONTENT_LENGTH</FONT></TH>
    <TD><FONT face=3D"Courier New">'67'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">REMOTE_ADDR</FONT></TH>
    <TD><FONT face=3D"Courier New">'192.168.2.10'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">channel.creation_time</FONT></TH>
    <TD><FONT face=3D"Courier New">1036509387</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">SERVER_PROTOCOL</FONT></TH>
    <TD><FONT face=3D"Courier New">'HTTP/1.1'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">PATH_INFO</FONT></TH>
    <TD><FONT face=3D"Courier =
New">'/Krude/Upload_FileAction'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">HTTP_HOST</FONT></TH>
    <TD><FONT face=3D"Courier New">'127.0.0.1:8080'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">REQUEST_METHOD</FONT></TH>
    <TD><FONT face=3D"Courier New">'POST'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">SCRIPT_NAME</FONT></TH>
    <TD><FONT face=3D"Courier New">''</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">SERVER_SOFTWARE</FONT></TH>
    <TD><FONT face=3D"Courier New">'Zope/(Zope 2.6.0 (binary release, =
python=20
      2.1, solaris-2.8-sparc), python 2.1.3, sunos5) =
ZServer/1.1b1'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">HTTP_CACHE_CONTROL</FONT></TH>
    <TD><FONT face=3D"Courier New">'no-cache'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">CONNECTION_TYPE</FONT></TH>
    <TD><FONT face=3D"Courier New">'Keep-Alive'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">HTTP_REFERER</FONT></TH>
    <TD><FONT=20
      face=3D"Courier =
New">'http://127.0.0.1:8080/Krude/Upload_FileForm'</FONT></TD></TR>
  <TR vAlign=3Dtop align=3Dleft>
    <TH><FONT face=3D"Courier New">SERVER_NAME</FONT></TH>
    <TD><FONT=20
face=3D"Courier =
New">'gratuitous'</FONT></TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV=
><STRONG></STRONG>
<DIV><STRONG></STRONG>
<P><BR></P></FONT></DIV></FONT></FONT></BODY></HTML>

------=_NextPart_000_0030_01C284B4.F8241850--