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

Vito Falco vitofalco a gmail.com
Ven 7 Set 2012 08:34:47 UTC


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


Maggiori informazioni sulla lista Plone-IT