首页 > 解决方案 > 无法使用烧瓶在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())

标签: pythonpython-3.xflask

解决方案


我能够使用此代码来做到这一点。我们读取文件然后对其进行解码的 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())

推荐阅读