python - 在 Flask 中上传文本文件并在 html 中读取
问题描述
我正在尝试上传一个简单的文本文件,然后将其显示在烧瓶中的另一个 URL 中。但是,我得到一个空白输出,其中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 和烧瓶比较陌生,在这里感谢您的帮助。谢谢!
解决方案
感谢这篇文章的评论者,我可以想出一个解决办法。最初,我得到一个b"作为使用only f.read()
.
当我使用 时f.seek(0)
,我得到了我的文本文件的输出,但是有很多编码和格式错误,包括一个新的前面的 b`,然后是我的输出。
但添加 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>
我希望这也可以帮助其他人。谢谢!
推荐阅读
- php - Php文件分块 - 我如何正确地做到这一点
- javascript - 在 React 中两次使用相同组件时的意外行为
- c# - 为 UI 创建一个关闭按钮以关闭表单正在冻结并停止我的应用程序
- python - Python如何将多个格式化字符串组合在一起
- swift - 当 UI 元素在透明的 NSView 中移动时,它们的轮廓仍然存在
- haskell - 如何修复此功能
- javascript - 非法字符。在第 '4' 行位置 '6' JavaScript 错误
- php - 如何在 PHP 中转换字符?
- ruby-on-rails - 在设计/注册控制器上使用 Select2 和 Ajax
- reactjs - Vis.js 分层可视化网络算法变了?