uploading a file via an external method
I've used this to upload files to a specific directory, not to Zope (or as an Zope object). The problem is that it's looking in the folder for the files and I'd like it to upload from a chosen directory (or my desktop) in the same way as manage_addFile does. Kate external method called upload_external: import os, shutil def upload_external(self,file,REQUEST): #check if file was sent correctly if file.read(1) == '': return '<h2>File does not exist</h2>' else: file.seek(0) iname=os.path.basename(file.filename) oname=os.path.join(self.savedir,iname) f=open(oname,"wb") f.write(file.read()) # let's get the mime information mime_type=file.headers.headers[1] user=str(REQUEST.AUTHENTICATED_USER) try: self.add_entry(path=self.savedir,filename=iname,owner=user) except: os.remove(oname) return '<h2>File upload not completed correctly</h2>' return '''<h2>%s was sent correctly, and saved in %s</h2><h3>The Mime Type of the file is</h3>%s<h3>Saved by</h3>%s''' % (iname,oname,mime_type,user) The self.savedir is a property set in the folder which contains the external method and tells the external method where to put the file. The self.add_entry is an update on a database to keep track of the files uploaded, etc. ---------- upload_html: <FORM ACTION="upload_external" METHOD="POST" ENCTYPE="multipart/form-data"> <TABLE CELLSPACING="2"> <TR> <TH ALIGN="LEFT" VALIGN="TOP">File</TH> <TD ALIGN="LEFT" VALIGN="TOP"> <INPUT TYPE="file" NAME="file" SIZE="25" VALUE=""> </TD> </TR> <TR> <TD></TD> <TD><BR><INPUT TYPE="SUBMIT" VALUE="Change"></TD> </TR> </TABLE> </FORM>
I'd suggest you look at LocalFS or one of the ExtFile products rather than trying to hack something yourself... Chris Kate Legere wrote:
I've used this to upload files to a specific directory, not to Zope (or as an Zope object). The problem is that it's looking in the folder for the files and I'd like it to upload from a chosen directory (or my desktop) in the same way as manage_addFile does.
Kate
external method called upload_external:
import os, shutil
def upload_external(self,file,REQUEST): #check if file was sent correctly if file.read(1) == '': return '<h2>File does not exist</h2>' else: file.seek(0) iname=os.path.basename(file.filename) oname=os.path.join(self.savedir,iname) f=open(oname,"wb") f.write(file.read()) # let's get the mime information mime_type=file.headers.headers[1] user=str(REQUEST.AUTHENTICATED_USER) try: self.add_entry(path=self.savedir,filename=iname,owner=user) except: os.remove(oname) return '<h2>File upload not completed correctly</h2>' return '''<h2>%s was sent correctly, and saved in %s</h2><h3>The Mime Type of the file is</h3>%s<h3>Saved by</h3>%s''' % (iname,oname,mime_type,user)
The self.savedir is a property set in the folder which contains the external method and tells the external method where to put the file.
The self.add_entry is an update on a database to keep track of the files uploaded, etc.
----------
upload_html:
<FORM ACTION="upload_external" METHOD="POST" ENCTYPE="multipart/form-data"> <TABLE CELLSPACING="2"> <TR> <TH ALIGN="LEFT" VALIGN="TOP">File</TH> <TD ALIGN="LEFT" VALIGN="TOP"> <INPUT TYPE="file" NAME="file" SIZE="25" VALUE=""> </TD> </TR> <TR> <TD></TD> <TD><BR><INPUT TYPE="SUBMIT" VALUE="Change"></TD> </TR> </TABLE> </FORM>
_______________________________________________ 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 )
-- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
participants (2)
-
Chris Withers -
Kate Legere