[Plone-IT] return di un file su filesystem da view

Gianni Cozzolongo gianniftp a gmail.com
Mer 12 Set 2012 15:10:48 UTC


ora funziona perfettamente.

grazie per le indicazioni.

a presto

gianni

On 9/12/12, SauZheR <sauzher a gmail.com> wrote:
> ciao,
> puo' essere che tu abbia settato il body del response con il descrittore
> del file non ancora resettato.
>
> Ti consiglio di fare qualcosa del tipo:
>
> filetemporaneo.seek(0)
> self.request.response.setBody(filetemporaneo.read())
>
> return self.request.response.outputBody()
>
>
> prova un po' e facci sapere.
>
>
> ;)
> alessandro
>
>
> Il giorno 07 settembre 2012 11:35, Gianni Cozzolongo
> <gianniftp a gmail.com>ha scritto:
>
>> andando avanti col debug trovo che arrivando alla esecuzione del return
>> vero e proprio del form
>> .buildout/eggs/z3c.form-2.4.3-py2.6.egg/z3c/form/action.py(104)execute()
>>
>> il tipo di oggetto del result e' di tipo file e dovrebbe contenere il
>> file
>> corretto,
>>
>>
>> ad un certo punto pero'
>> .buildout/eggs/Zope2-2.13.8-py2.6.egg/ZPublisher/Publish.py(129)publish()
>> -> response.setBody(result)
>>
>> il result e' diventato il render del fom ...
>> cosa non ho capito e dove sbaglio?
>>
>> Gianni
>>
>>
>>
>>
>> 2012/9/7 Vito Falco <vitofalco a gmail.com>
>>
>>> Non dovrebbe essere solo una questione di mime type?
>>> http://kb.iu.edu/data/agtj.html
>>>
>>> Vito
>>>
>>> Il giorno 07 settembre 2012 10:30, Gianni Cozzolongo
>>> <gianniftp a gmail.com
>>> > ha scritto:
>>>
>>> salve a tutti
>>>>
>>>> ho lo stesso problema ( il dowload del file mi presenta il file della
>>>> pagina del form)
>>>> solo che invece di una browser view ho un form creato con z3c.form.
>>>>
>>>> e quindi la action del form e' gestita dal @button.buttonAndHandler
>>>>
>>>> qualsiasi cosa metta come return mi restituisce il codice html della
>>>> vista.
>>>>
>>>> l'oggetto da far salvare e' un file che ho precedentemente salvato in
>>>> un
>>>> tempfile.TemporaryFile.
>>>>
>>>> come faccio a restituirlo come file da scaricare?
>>>>
>>>> buon lavoro
>>>> Gianni
>>>>
>>>>
>>>>
>>>> 2012/3/15 Simone Orsi <simahawk a gmail.com>
>>>>
>>>>> On 03/15/2012 02:35 PM, ciccio2000 wrote:
>>>>>
>>>>>> * giovedì 15 marzo 2012, alle 13:07, Simone Orsi scrive:
>>>>>>
>>>>>>> Ciao,
>>>>>>>
>>>>>> [...]
>>>>>>
>>>>>>> come restituisci il contenuto del file? Quel "return iterator" dove
>>>>>>> sta?
>>>>>>>
>>>>>>> Se restituisci il contenuto del file nel __call__ della view ti deve
>>>>>>> per forza mostrare il contenuto del file.
>>>>>>>
>>>>>>> Tipo:
>>>>>>>
>>>>>>> def __call__(self):
>>>>>>>      return self.get_file_content()
>>>>>>>
>>>>>>
>>>>>> E' in un metodo della view:
>>>>>>
>>>>>> class View(grok.View):
>>>>>>      grok.context(IMapViewer)
>>>>>>      grok.require('zope2.View')
>>>>>>
>>>>>> ...
>>>>>>
>>>>>>      def downloadData(self):
>>>>>>          ...
>>>>>>          zfname = "/tmp/%s-%s-%s.zip" % (st, et, model)
>>>>>>          ...
>>>>>>          iterator = filestream_iterator(zfname, 'rb')
>>>>>>          RESPONSE.setHeader...
>>>>>>          return iterator
>>>>>>
>>>>>>
>>>>>> come ho detto il file non e' un oggetto plone,
>>>>>> ma viene generato su file system dinamicamente
>>>>>> a seconda di come viene riempito un form
>>>>>> (che si trova nella view).
>>>>>>
>>>>>> ciao e grazie.
>>>>>>
>>>>> non importa da dove arriva il contenuto, importa come lo restituisci
>>>>> ;)
>>>>>
>>>>> Non so come vuoi che funzioni il tutto ma una possibile soluzione e'
>>>>> quella che ti ho detto prima, farlo ritornare al __call__.
>>>>>
>>>>> Magari puoi mettere un pulsante di submit per il download che richiami
>>>>> la stessa vista e nel __call__ fai qualcosa del genere:
>>>>>
>>>>> def __call__(self):
>>>>>     if self.request.get('download'):
>>>>>         return self.downloadData()
>>>>>     return super(self.__class__,self).__**call__()
>>>>>
>>>>> ______________________________**_________________
>>>>> Plone-IT mailing list
>>>>> Plone-IT a lists.plone.org
>>>>> https://lists.plone.org/**mailman/listinfo/plone-plone-**it<https://lists.plone.org/mailman/listinfo/plone-plone-it>
>>>>> http://plone-regional-forums.**221720.n2.nabble.com/Plone-**
>>>>> Italy-f221721.html<http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html>
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Plone-IT mailing list
>>>> Plone-IT a lists.plone.org
>>>> https://lists.plone.org/mailman/listinfo/plone-plone-it
>>>>
>>>> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
>>>>
>>>
>>>
>>>
>>> --
>>> *Vito Falco*
>>> Webdeveloper & designer freelance, Plone enthusiast
>>> Bari, IT
>>> tel +393346330137 | skype vito80ba | twitter vito80ba
>>> Blog http://appuntiplone.wordpress.com
>>>
>>>
>>> _______________________________________________
>>> Plone-IT mailing list
>>> Plone-IT a lists.plone.org
>>> https://lists.plone.org/mailman/listinfo/plone-plone-it
>>> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
>>>
>>
>>
>> _______________________________________________
>> Plone-IT mailing list
>> Plone-IT a lists.plone.org
>> https://lists.plone.org/mailman/listinfo/plone-plone-it
>> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
>>
>
>
>
> --
>   bye
> SauZheR
> ************************************
> l'iterazione è umana...
> la ricorsione, Divina!
> ************************************
> reply to: sauzher AT gmail DOT com
>


Maggiori informazioni sulla lista Plone-IT