Flask 정적 파일 다운로드 방법
2021. 8. 5. 11:17ㆍIT/python
SMALL
frontend : angularjs backend : flask |
<button type="button" ng-click="event.close()" class="btn me-auto" id="close" data-bs-dismiss="modal">Close</button>
<a href="{{pdf_path}}" download="{{pdf_path}}">
<button type="button" ng-click="event.download()" class="btn btn-primary cornflower" id="download" data-bs-dismiss=" modal">Download</button> </a>
Download 버튼을 누르면 정적 파일(서버에 있는 PDF 파일) 등을 다운로드 할 수 있는 방법을 알려드리겠습니다
이러한 modal 창이 있다고 하면 header 정보를 통해 python 에서 다운받고자 하는 PDF 파일 경로를 얻어오는 코드를 짜야 합니다.
def fileSearch(title, files):
for file in files:
if title in file:
return file
else:
print('없습니다.')
files = glob.glob(fpath + '*_infor2.csv')
if 'title' in query:
file = fileSearch(query['title'] + '_infor2.csv', files)
이런 식으로 file 변수에 pdf 파일 경로를 보내서
프론트엔드에서(angularjs)
<< API.apps.view~ 이 코드는 파이썬과 angularjs를 연결하는 것인데 이건 무시하셔도 됩니다. >>
$scope.pdf_path = res.data.pdf_path 를 통해 파이썬에서 원하는 PDF 파일 경로를 받고
html의 href 값에 {{pdf_path}} 변수값에 넣어 주면 됩니다
$scope.event.download = function() {
$scope.header = $('body > div > footer > div > div.modal-header > h5');
$scope.header = $scope.header.text();
API.apps.view.functions('download', {page: $scope.page, header: $scope.header}, function(res){
$scope.pdf_path = res.data.pdf_path;
console.log('pdf file ', res.data.pdf_path);
if (res.code != 200) {
toastr.warning('다운로드를 할 수 없습니다.');
}
});
}
이때 ! 그냥 받으면 분명 오류가 뜰 것입니다 backend 코드를 바꿔주어야 합니다
@app.route('/resources/<path:path>')
def resources(path):
resource_path = os.path.join(WEB_RESOURCE, path)
print(resource_path)
return flask.send_file(resource_path)
flask 는 send_file 함수를 이용해서 정적 파일을 전송할 수 있는데 이때 path를 잘 확인하고 이것을 잘 수정하여 기능을 구현해 보시기 바랍니다
LIST
'IT > python' 카테고리의 다른 글
[코딩테스트 & Python] '신규 아이디 추천' - 2021 KAKAO BLIND RECRUITMENT (0) | 2021.09.15 |
---|---|
[코딩테스트 & Python] '키패드 누르기' - 2020 카카오 인턴십 문제 (0) | 2021.08.27 |