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 <[email protected]>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 <[email protected]> > >> 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 >> [email protected] >> 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 > [email protected] > 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 [email protected] https://lists.plone.org/mailman/listinfo/plone-plone-it http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
