RE: [Zope] picture as parameter for an external method
Thanks for your help Tino, 1) For clarity purpose here is the whole page template <html> <head> <title> Titre </title> </head> <body> <form action="py_test" enctype='multipart/form-data' method='post'> <input type="file" name="filename"> <br><br> <input type="submit" name="toto"> </form> </body> </html> 2) here is the python script "py_test" request=context.REQUEST context.my_external_function( original_id=request['filename'] ) #context.my_external_function( original_id=request.form.get('filename') ) #context.my_external_function( request['filename'] ) !!nb: the 2 commented lines do not change anything to the error message ... 3) my_external_function def my_external_function (self, original_id): pass Of course this external method is supposed to do much more. I hope to be able to create thumbnail (as an example seen in the zope book). But i have simplified it as much as possible to see where the problem was located. I'm sure i ll have other problems to create the thumbnails ... : - ) but the real problem at this time is to pass a picture to the exernal method ... Regards Ph. -----Original Message----- From: Tino Wildenhain [mailto:tino@wildenhain.de] Sent: lundi 11 octobre 2004 12:53 To: VIGNAUX Philippe Cc: zope@zope.org Subject: Re: [Zope] picture as parameter for an external method On Mon, 2004-10-11 at 11:58, VIGNAUX Philippe wrote:
Hi !
Is there a way to pass a picture (extension JPG) as a parameter of an external method. It seem to be the case as read on the internet but for me it doesnÿt work ! My zope config : Zope 2.6.4 (binary release, python 2.1, win32-x86), python 2.1.3, win32 This is the problem : 1) Iÿve got a page template where I can choose a picture thru a « file » object : <input type="file" name="filename">
Did you adjust enctype accordingly?
2) This page template calls a python scripts
Calls? The Template is target of the POST request too?
request=context.REQUEST context.my_external_function( original_id=request['filename'] ) #context.my_external_function( request['filename'] )
if you do it the right way[tm] (see the enctype you can borrow from any ZMI HTML source which has a file upload) request.form.get('filename') will give you a file object. (If you return from form of course)
3) my_external_function is defined in an appropiate module in the « Extensions » folder of my zope installation
def my_external_function (self, original_id):
pass
This is all?
PROBLEM : when i run the process i get an error :
exceptions.AssertionError
Sorry, a site error occurred.
Traceback (innermost last):
* Module ZPublisher.Publish, line 150, in publish_module * Module ZPublisher.Publish, line 106, in publish * Module Zope.App.startup, line 225, in abort * Module ZODB.Transaction, line 135, in abort * Module ZODB.Connection, line 256, in abort
When i configure the whole thing to pass a normal parameter (text), it works normally ; so obviously the problem is when trying to pass a picture.
This might be related to the enctype. Try it first I'd say. What is your external method supposed to do? Regards Tino ########################################### This message has been scanned by ICT - Africa Museum
Hi, On Mon, 2004-10-11 at 13:52, VIGNAUX Philippe wrote:
Thanks for your help Tino,
1) For clarity purpose here is the whole page template
<html> <head> <title> Titre </title> </head> <body> <form action="py_test" enctype='multipart/form-data' method='post'> <input type="file" name="filename"> <br><br> <input type="submit" name="toto"> </form> </body> </html>
2) here is the python script "py_test"
request=context.REQUEST context.my_external_function( original_id=request['filename'] ) #context.my_external_function( original_id=request.form.get('filename') ) #context.my_external_function( request['filename'] )
!!nb: the 2 commented lines do not change anything to the error message ...
Ok, while "filename" is a bit misleading here. In fact you get a file object. This has an attribute "filename" iirc. It has the method read() to get data out of it. Maybe you try another name for the file object just for test and use request.form explicitely. Regards Tino
Hi I just simulate your situation and it works great. I attached the picture.zexp file that generates a folder with : upload_html - page template py_test - python script my_external_function - external method The my_external_function.py from extensions contains just: def my_external_function(self, picture): print type(picture) print picture I tested it on Zope 2.5.1 and 2.6.4. Hope this will help. Dragos VIGNAUX Philippe wrote:
Thanks for your help Tino,
1) For clarity purpose here is the whole page template
<html> <head> <title> Titre </title> </head> <body> <form action="py_test" enctype='multipart/form-data' method='post'> <input type="file" name="filename"> <br><br> <input type="submit" name="toto"> </form> </body> </html>
2) here is the python script "py_test"
request=context.REQUEST context.my_external_function( original_id=request['filename'] ) #context.my_external_function( original_id=request.form.get('filename') ) #context.my_external_function( request['filename'] )
!!nb: the 2 commented lines do not change anything to the error message ...
3) my_external_function
def my_external_function (self, original_id): pass
Of course this external method is supposed to do much more. I hope to be able to create thumbnail (as an example seen in the zope book). But i have simplified it as much as possible to see where the problem was located. I'm sure i ll have other problems to create the thumbnails ... : - ) but the real problem at this time is to pass a picture to the exernal method ...
Regards
Ph.
-----Original Message----- From: Tino Wildenhain [mailto:tino@wildenhain.de] Sent: lundi 11 octobre 2004 12:53 To: VIGNAUX Philippe Cc: zope@zope.org Subject: Re: [Zope] picture as parameter for an external method
On Mon, 2004-10-11 at 11:58, VIGNAUX Philippe wrote:
Hi !
Is there a way to pass a picture (extension JPG) as a parameter of an external method. It seem to be the case as read on the internet but for me it doesnÿt work ! My zope config : Zope 2.6.4 (binary release, python 2.1, win32-x86), python 2.1.3, win32 This is the problem : 1) Iÿve got a page template where I can choose a picture thru a « file » object : <input type="file" name="filename">
Did you adjust enctype accordingly?
2) This page template calls a python scripts
Calls? The Template is target of the POST request too?
request=context.REQUEST context.my_external_function( original_id=request['filename'] ) #context.my_external_function( request['filename'] )
if you do it the right way[tm] (see the enctype you can borrow from any ZMI HTML source which has a file upload) request.form.get('filename') will give you a file object. (If you return from form of course)
3) my_external_function is defined in an appropiate module in the « Extensions » folder of my zope installation
def my_external_function (self, original_id):
pass
This is all?
PROBLEM : when i run the process i get an error :
exceptions.AssertionError
Sorry, a site error occurred.
Traceback (innermost last):
* Module ZPublisher.Publish, line 150, in publish_module * Module ZPublisher.Publish, line 106, in publish * Module Zope.App.startup, line 225, in abort * Module ZODB.Transaction, line 135, in abort * Module ZODB.Connection, line 256, in abort
When i configure the whole thing to pass a normal parameter (text), it works normally ; so obviously the problem is when trying to pass a picture.
This might be related to the enctype. Try it first I'd say. What is your external method supposed to do?
Regards Tino
###########################################
This message has been scanned by ICT - Africa Museum
_______________________________________________ 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 )
-- Dragos Chirila Programmer, Finsiel ROMANIA 44A, Ficusului St. - 71544 Bucharest Tel: +40 21 2320193 Fax: +40 21 2329807 URL: http://www.finsiel.ro Jabber: dragos@jabber.finsiel.ro
participants (3)
-
Dragos Chirila -
Tino Wildenhain -
VIGNAUX Philippe