繁体   English   中英

在 Flask 中上传一个文本文件并在 html 中读取它

[英]Uploading a text file in Flask and reading it in html

我正在尝试上传一个简单的文本文件,然后在 flask 中的另一个 URL 中显示它。 但是,我得到了一个空白的 output 和b"作为唯一显示的东西。它只是一个带有 utf-8 的常规文本文件。

这是代码 -

def upload_source():
if request.method == 'POST':
    # check if the post request has the file part
    f = request.files['file']
    if f.filename == "":
        print("No file Name")
        return redirect(request.url)
    if not allowed_file(f.filename):
        print("File extension not allowed!")
        return redirect(request.url)
    else:
        full_filename = secure_filename(f.filename)
        f.save(os.path.join(app.config['UPLOAD_FOLDER'], full_filename))
        print("File saved")
        content = f.read()
        return render_template('source.html', text=content)

我将它包含在源代码 html

<p> {{ text }} </p>

我对 python 和 flask 比较陌生,在这里感谢您的帮助。 谢谢!

感谢这篇文章的评论者,我可以想出一个解决办法。 最初,在仅使用only f.read()之后,我得到了一个b"作为唯一的 output 。

当我使用f.seek(0)时,我得到了我的文本文件的 output 但有很多编码和格式错误,包括一个的前面的 b`,然后是我的 output。

但添加content = f.read()
content = str(content, 'utf-8')也修复了大部分问题。

所以这是最终的解决方案-

def upload_source():
if request.method == 'POST':
    # check if the post request has the file part
    f = request.files['file']
    if f.filename == "":
        print("No file Name")
        return redirect(request.url)
    if not allowed_file(f.filename):
        print("File extension not allowed!")
        return redirect(request.url)
    else:
        full_filename = secure_filename(f.filename)
        f.save(os.path.join(app.config['UPLOAD_FOLDER'], full_filename))
        f.seek(0)
        print("File saved")
        content = f.read()
        content = str(content, 'utf-8')
        return render_template('source.html', text=content)

并且不要忘记同样的旧 HTML -

<p> {{ text }} </p>

我希望这也可以帮助其他人。 谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM