I think you should use
<iframe src="{{=URL('reports', 'form_query.load')}}" style="width:0px;
height:0px; border:0"></iframe>
On Thursday, 6 September 2012 11:48:56 UTC-5, maverick wrote:
>
> Hello!
> I want to stream a file as an attachment in the response. I have this
> function:
> def form_query():
> response.flash = str(request.args(0))
> response.generic_patterns = ['load']
> response.headers['Content-Type'] =
> gluon.contenttype.contenttype('.txt')
> response.headers['Content-Disposition'] = 'attachment;
> filename=somefile.txt'
> #more code goes in here to process request.args here. Ultimately,
> the controller is expected to return a dict containing a table and the file
> to be streamed as an attachment. For now just trying to get the file
> streamed.
> return response.stream(open('somefile.txt'),chunk_size=1024)
>
> When I call this controller normally (if I put the streaming code inside
> index() for e.g.) it responds by opening up a download popup to save the
> file to disk. But when I have this called as a target function from
> web2py_component in index.html (to fill a div with the response)like this:
>
> web2py_component("{{=URL('reports', 'form_query.load')}}" + "/" +
> jQuery(this).val(), target='div_form_query');
>
> It renders the file inside the DIV 'div_form_query' rather than popup a
> download window.
>
> Any ideas how to render the file as an attachment while using
> web2py_component. I'm using web2py_component as I want to conditionally
> load input forms into that div target (div_form_query) based on a select
> list which has tables as options. The index.html looks something like:
>
> {{left_sidebar_enabled,right_sidebar_enabled=True,False}}
> {{extend 'layout.html'}}
> <h5>{{=message}}</h5>
> {{=SELECT('Select a report',
> *[OPTION(repts[i].descr, _value=str(repts[i].report)) for i in
> range(len(repts))], _id="rep_type")}}
> <div id="div_form_query"></div>
>
> <script>
> jQuery(document).ready(function(){
> jQuery('#rep_type').change(function(){
> web2py_component("{{=URL('reports', 'form_query.load')}}" + "/" +
> jQuery(this).val(), target='div_form_query');
> });
> });
> </script>
>
> {{block left_sidebar}}
> {{"""=A(T("Administrative Interface"),
> _href=URL('admin','default','index'), _class='button',
> _style='margin-top: 1em;')"""}}
> <!--h6>{{=T("Don't know what to do?")}}</h6-->
> <ul>
> <li>{{=A(T("Reports"), _href=URL('netman','reports','index'))}}</li>
> <li>{{=A(T("Billing"), _href=URL('netman','billing','index'))}}</li>
> <li><a href="http://192.168.136.40/zabbix">{{=T('Monitoring')}}</a></li>
> </ul>
> {{end}}
>
> Thanks,
> mave
>
--