파일을 응답의 첨부 파일로 스트리밍하려고합니다. 나는이 기능을 가지고 :response.stream 및 web2py_component : 파일을 첨부 파일로 스트리밍 할 수 없습니다.
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)
나는 (내가 지수 (내부 스트리밍 코드를 삽입하는 경우)와 예에 대한 index.html을로 이동합니다) 일반적으로이 컨트롤러를 호출은 파일을 저장 다운로드 팝업을 열어 응답 할 때 디스크에. 다운로드 팝업보다는
web2py_component("{{=URL('reports', 'form_query.load')}}" + "/" + jQuery(this).val(), target='div_form_query');
는 그것은 DIV 'div_form_query'내부의 파일을 렌더링 : I이 된 index.html에서 web2py_component에서 대상 함수로 호출 한 때이 같은 (응답과 사업부를 채우기 위해) 창문.
web2py_component를 사용하는 동안 파일을 첨부 파일로 렌더링하는 방법에 대한 아이디어. 조건부로 입력 양식을 div 옵션 (div_form_query)에로드하려면 원하는 테이블을 가진 선택 목록을 기반으로 web2py_component를 사용하고 있습니다. 만 위의 web2py_component()
를 호출하는 것입니다
jQuery('#rep_type').change(function(){
var choice = jQuery(this).val();
web2py_component('{{=URL('reports', 'create_table')}}' + '/' + choice,
target='div_form_query');
window.open('{{=URL('reports', 'form_query')}}' + '/' + choice);
});
또 다른 옵션을, 그리고 : 어쩌면이 당신이 원하는 것을 할 것입니다
{{extend 'layout.html'}}
{{=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>
{{end}}
감사합니다, MAVE
파일을 첨부 파일로 다운로드하려면 구성 요소 div의 요점은 무엇입니까? div는 페이지에 무언가를 표시하고자 함을 의미합니다. – Anthony
Anthony, 맞습니다. DIV는 컨트롤러가 응답을 표시하도록 컨트롤러에 추가로 응답을 표시해야합니다. 죄송합니다. 위와 같지 않은 경우 제어기 (form_query)가 다음 두 가지 작업을 수행하기를 원합니다. 목표 DIV에 들어가고 파일 다운로드를 트리거하는 테이블. form_query()에 대한 위의 코드는 테이블을 포함하는 dict을 반환하는 코드를 표시하지 않습니다. – maverick
두 가지 별도의 호출을 만들어야합니다. 하나는 테이블 용이고 다른 하나는 파일 용입니다 (두 개의 개별 함수가 될 수 있습니다). 업데이트 된 답변보기 – Anthony