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

Simone Orsi simahawk a gmail.com
Gio 15 Mar 2012 12:07:00 UTC


Ciao,

On 03/14/2012 04:07 PM, ciccio2000 wrote:
> Ciao a tutti.
>
> Dunque ho un prodotto sviluppato con dexterity.
> All'interno di una view ho inserito un metodo che viene chiamato dalla submit
> di un form e dovrebbe restituire un file zip.
>
> Il file in questione non e' un oggetto plone, ma viene creato dinamicamente
> su filesystem a seconda dei dati inseriti nel form.
>
> Quindi per far restituire il file, ho fatto cosi':
>
> ********************************************************************
> iterator = filestream_iterator(zfname, 'rb')
> stat = os.stat(zfname)
>
> RESPONSE=self.request.response
> RESPONSE.setHeader('Content-Disposition', 'attachment; filename="%s"' % zfname.replace("/tmp/",""))
> RESPONSE.setHeader('Content-Type', "application/zip")
> RESPONSE.setHeader('Content-Length', stat.st_size)
>
> return iterator
> ********************************************************************
>
> Ora, in questo modo mi fa scaricare un file zip con il nome corretto ma che in
> realta' non e' altro che l'html della view.
>
> Se invece dell'iterator leggo tutto il file (e' un approccio da evitare, ma
> per provare ...) restituisce il file zip corretto, ma sempre mischiato con
> l'html della vista.
>
> Qualcuno ha idea di quale possa essere il problema?
>
> La mia conf:
> Plone 4.0.5
> Zope 2.12.17
> Python 2.6.6

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()




Maggiori informazioni sulla lista Plone-IT