python flask 上传下载 api_python – 使用Flask上传和下载文件
PythonAnywhere dev這里.這是一個關于Flask和Web開發的一個很好的問題,而不是我們的系統特定的,所以我會嘗試給出一個沒有任何特定的通用答案:-)
有一些事情我需要知道,給出一個明確的答案你的問題,所以我首先列出我所做的假設 – 如果我錯了任何一個,給我一個評論我會適當地更新答案.
>我假設你上傳的文件不是很大,可以適應一個合理的內存 – 比如說,小于一兆字節.
>我假設你已經編寫來從文本文件中生成CSV的程序是Python,而且它(或者更有可能是容易地改變為具有)一個需要一個字符串的函數包含文本文件的內容,并返回需要寫入CSV的內容.
如果兩者都是這樣,那么構建Flask應用程序的最佳方法就是處理Flask內的所有內容.代碼示例值得一千字,所以這里是一個簡單的一個,我放在一起,允許用戶上傳一個文本文件,通過一個稱為transform的函數(這是你的轉換程序中的函數將插入我的位置)在整個文件中替換=,并將結果發送回瀏覽器. There’s a live version of this app on PythonAnywhere here.
from flask import Flask, make_response, request
app = Flask(__name__)
def transform(text_file_contents):
return text_file_contents.replace("=", ",")
@app.route('/')
def form():
return """
Transform a file demo
"""
@app.route('/transform', methods=["POST"])
def transform_view():
file = request.files['data_file']
if not file:
return "No file"
file_contents = file.stream.read().decode("utf-8")
result = transform(file_contents)
response = make_response(result)
response.headers["Content-Disposition"] = "attachment; filename=result.csv"
return response
關于你的其他問題:
>模板:我沒有使用這個例子的模板,因為我想把它全部適合一個代碼.如果我正在做的正確,那么我將把窗體視圖生成的東西放入一個模板中,但這就是所有.
>你可以通過寫入文件來做到這一點 – 是的,可以使用我使用stream屬性的文件對象上的save(filename)方法來保存上傳的文件.但是如果您的文件很小(根據我上面的假設),那么在內存中處理它們可能更有意義,就像上面的代碼一樣.
我希望所有的幫助,如果你有任何問題,那么只需留下評論.
總結
以上是生活随笔為你收集整理的python flask 上传下载 api_python – 使用Flask上传和下载文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于快乐的名人名言大全208个
- 下一篇: 安东阳情歌对唱49首歌