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

SauZheR sauzher a gmail.com
Mer 12 Set 2012 13:46:03 UTC


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
-------------- parte successiva --------------
Un allegato HTML Ŕ stato rimosso...
URL: <http://lists.plone.org/pipermail/plone-plone-it/attachments/20120912/033d0a5c/attachment.html>


Maggiori informazioni sulla lista Plone-IT