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)方法来保存上传的文件.但是如果您的文件很小(根据我上面的假设),那么在内存中处理它们可能更有意义,就像上面的代码一样.

我希望所有的帮助,如果你有任何问题,那么只需留下评论.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值