반응형
Flask : 버튼을 클릭하면 csv 파일 다운로드
플라스크/피톤을 막 시작했어요.제가 원하는 것은 HTML에 다운로드 버튼이 있고 다음 기능을 호출하는 것입니다.
function downloadPlotCSV() {
$.ajax({
url: "/getPlotCSV",
type: "post",
success: function(data) {
dataPlot = JSON.parse(data);
console.log(dataPlot);
}
});
}
불완전한 플라스크 코드는 다음과 같습니다.
@app.route('/getPlotCSV', methods = ['POST'])
def plotCSV():
data = open("outputs/Adjacency.csv")
제가 직면한 문제는 이 CSV 파일을 다운로드하거나 JSON 문자열로 반환하는 방법을 찾을 수 없기 때문에 Javascript를 사용하여 다운로드할 수 없다는 것입니다.JSON으로 보내거나 플라스크 자체를 통해 다운로드 할 수 있는 방법이 없을까요?어떻게 하면 좋을까요?
다음은 Javascript를 사용하지 않고 CSV 파일을 다운로드하는 한 가지 방법입니다.
#!/usr/bin/python
from flask import Flask, Response
app = Flask(__name__)
@app.route("/")
def hello():
return '''
<html><body>
Hello. <a href="/getPlotCSV">Click me.</a>
</body></html>
'''
@app.route("/getPlotCSV")
def getPlotCSV():
# with open("outputs/Adjacency.csv") as fp:
# csv = fp.read()
csv = '1,2,3\n4,5,6\n'
return Response(
csv,
mimetype="text/csv",
headers={"Content-disposition":
"attachment; filename=myplot.csv"})
app.run(debug=True)
를 사용하여 정적 파일을 전송할 수 있습니다.
from flask import send_file
@app.route('/getPlotCSV') # this is a job for GET, not POST
def plot_csv():
return send_file(
'outputs/Adjacency.csv',
mimetype='text/csv',
download_name='Adjacency.csv',
as_attachment=True
)
플라스크 2.0 이전 버전에서는download_name
호출되었다attachment_filename
.
우선 플라스크에서 수입해야 합니다.make_response
응답을 생성하고 변수를 만듭니다.response
둘째, 만들기response.content_type = "text/csv"
세 번째 - 답변을 회신합니다.
언급URL : https://stackoverflow.com/questions/30024948/flask-download-a-csv-file-on-clicking-a-button
반응형
'source' 카테고리의 다른 글
Angularjs에서 제출한 후 폼 재설정 (0) | 2023.02.09 |
---|---|
투고 대신 페이지에 워드프레스 LOUP를 사용하시겠습니까? (0) | 2023.02.09 |
PHP에서 날짜가 현재 주인지 확인합니다. (0) | 2023.02.09 |
fetch api에서 CORS 사용 (0) | 2023.02.09 |
Angular JS: ng-include 및 ng-controller (0) | 2023.02.09 |