python - 无法使用烧瓶在html页面上显示上传文件的内容
问题描述
我想在服务器上上传一个 csv 文件,然后想在单独的路由中显示其内容。
我的 init.py 文件:
from flask import Flask
from config import Config
app = Flask(__name__)
UPLOAD_FOLDER = 'C:/Users/parnal.patil/Documents/FLASKMiniProject/app/uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/uploader', methods=['GET', 'POST'])
@login_required
def uploader():
if request.method == 'POST':
f = request.files['file']
f = f.save(secure_filename(f.filename))
return render_template("uploader.html", data=f)
这是我添加文件上传链接的 index.html 文件:
<form action = "/uploader" method = "POST"
enctype = "multipart/form-data">
<input type = "file" name = "file" />
<br>
<input type = "submit"/>
</form>
还有我想查看 csv 数据的空白 uploader.html 文件。
{% extends "base.html" %}
{% block content %}
<p>{{ data }}</p>
{% endblock %}
我考虑在我的上传器视图功能中添加以下代码,但它不起作用。
file = pd.read_csv(f, encoding= 'unicode_escape')
return render_template("uploader.html", data=file.to_html())
解决方案
我能够使用此代码来做到这一点。我们读取文件然后对其进行解码的 io.StringIO 完成了工作。
@login_required
def uploader():
f = request.files['file']
if not f:
return "No file"
stream = io.StringIO(f.stream.read().decode("UTF8"), newline=None)
file = pd.read_csv(stream)
return render_template("uploader.html", data=file.to_html())
推荐阅读
- android - Android Talkback:遍历1个元素的所有项目后如何移出水平滚动RecyclerView
- laravel - 如何在 Laravel Admin 中以相反的顺序显示记录?
- sql - SQL 数学运算顺序
- vaadin - Vaadin flow 多平台运行时更新
- python - 绘制 3d 图形时的问题
- c++ - const 成员函数不能推断参数类型
- scala - sbt.librarymanagement.ResolveException:下载 org.apache.spark 时出错:spark-core:3.0.1
- docker - Docker 如何实现 DNS 域名服务器?
- html - 在我的 Rails 项目中无法应用 Html.haml 中的条件
- c# - 您尝试打开的文件的格式与文件扩展名指定的格式不同