2016-10-23 3 views
0

xlsx 파일을 반환하는 ajax 함수가 있습니다. 하지만 보안상의 이유로 아약스가 자동으로 다운로드를 시작할 수 없다고 읽었습니다. 그래서 xlsx 파일을 변수에 저장하고 "다운로드 준비 완료"버튼을 만들고 싶었습니다. 그게 가능한지 궁금 해서요.xlsx 파일을 변수에 저장하고를 클릭하여 다운로드 하시겠습니까?

xlsx 파일을 반환하는보기 함수.

return HttpResponse(save_virtual_workbook(wb), content_type='application/vnd.ms-excel') 

javacript

var xlsxVar = '' 

function ajaxGetCSV() { 

    $.ajax({ 
     url : "{% url 'manager:file' %}", 
     type : "POST", 
     data : { csrfmiddlewaretoken : '{{ csrf_token }}' }, 

     success : function(data) { 
      xlsxVar = data 
     }, 

     error : function(xhr,errmsg,err) { 
      console.log(xhr); 
      console.log(errmsg); 
      console.log(err); 
     } 
    }); 
}; 

그리고 다운로드를 시작하기 위해 약간의 클릭 기능.

업데이트 :

<div class='ready'> 
    test 
</div> 

$(".ready").click(function(){ 
     var link = $("<a></a>"); 
     link.href = xlsxFile; 
     link.download = true; 
     link.click(); 
}); 

위의 아직 다운로드를 찍으하지 않습니다.

+0

을 클릭 한 예이다. 그러나 단순히 다운로드 버튼에 대한 일반적인 앵커 요소 인 '를 사용하고 헤더를 옥텟 스트림으로 설정하여 다운로드하도록 지시 할 수 있습니다. – Terry

+0

@Terry의 솔루션이 가장 좋습니다. – youssouf

+0

'success' 함수에서'data'는 문자열입니까? – guest271314

답변

1

보안상의 이유로 권장 사항을 수행 할 수 없습니다. 당신이 할 수있는 것은 파일에 링크하는 앵커 태그를 사용하는 것입니다. 여기

내가 동적으로 닻을 만들고, 불가능 그것은 그것을

var link = $("<a></a>"); 
link.href = xlsxFile; 
link.download = true; 
link.click(); 
+0

답변 해 주셔서 감사합니다. 그러나 전에 $ .create ("a")를 보았습니다. 내 게시물을 편집했는데 올바른 구현인지 확인할 수 있습니까? '$ .create가 함수가 아닙니다'라는 메시지가 나타납니다. – vandelay

+0

코드가 변경되어 요소가 작성된 메소드를 변경했습니다. –

+0

나는 잘못된 일을하고 있는지 알지 못합니다. 그러나 작동하지 않는 것 같습니다. 다운로드가 시작되지 않습니다. 그것은 변수와 파일과 관련이 있습니까? – vandelay

관련 문제