반응형
python flask send_file 파일을 업로드하고 jquery.js를 통해 다운로드합니다
백엔드 라우팅입니다
@app.route("/download_data_file", methods=['GET', 'POST'])
def download_data_file():
"""
브라우저 다운로드 파일 인터페이스입니다
flask의 send_file로 파일을 보냅니다
"""
# 파일 이름 (확장자 포함)
info = json.loads(request.form.get('data'))
filename = info['filename']
filepath = info['filepath']
# # print(filepath)
# 파일 크기입니다
fsize = os.path.getsize(filepath)
response = make_response(send_file(filepath, as_attachment=True))
response.headers["Content-Disposition"] = "attachment; filename={}".format(filename.encode().decode('latin-1'))
response.headers["Content-length"] = fsize
return response
프론트 js입니다
function download_data_btn_func(obj) {
let filename = test.txt;
let filepath = ./test.txt;
let params = {};
params['filepath'] = filepath
params['filename'] = filename
console.log(params)
// 참고: 파일을 다운로드한 ajax는 dataType이 'json'이 아니라고 요청했습니다.그를 제거하면 ajax가 자동으로 dataType 속성 값을 맞춥니다.
$.ajax({
url: '/download_data_file',
type: 'post',
data: { 'data': JSON.stringify(params) },
success: function (result) {
// a 요소를 시뮬레이션하여 파일을 다운로드합니다
let blob = new Blob([result]);
let a = document.createElement('a');
let url = window.URL.createObjectURL(blob);
a.href = url;
a.download = filename;
a.click();
window.URL.revokeObjectURL(url);
},
error: function (result) {
console.log(result)
}
})
}
반응형
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
python은 ValueError could not broadcast input array from shape 또는 Can't convert non-rectangular를 보고합니다 (0) | 2022.12.06 |
---|---|
python 현재 실행 중인 스레드 이름과 개수를 가져옵니다. threading.enumerate( ) (0) | 2022.12.06 |
vscode를 사용하여 Python 프로그램을 만들고 실행합니다 (0) | 2022.12.03 |
selenium 프레임워크 stealth.min.js 파일은 브라우저 지문 기능을 숨깁니다 (0) | 2022.12.02 |
kali Linux에서 python 2.7을 설치합니다. (python 3도 일반적입니다) (0) | 2022.12.02 |