我正在制作一个数据可视化工具,它接受用户的输入(选择计算机上的文件);使用 Pandas、Numpy 等在 Python 中处理它;并将数据显示在本地服务器上的浏览器中。
使用 HTML 输入表单选择文件后,我无法访问数据。
HTML 形式:
<form action="getfile" method="POST" enctype="multipart/form-data">
Project file path: <input type="file" name="myfile"><br>
<input type="submit" value="Submit">
</form>
烧瓶路由:
@app.route("/")
def index():
return render_template('index.html')
@app.route('/getfile', methods=['GET','POST'])
def getfile():
if request.method == 'POST':
result = request.form['myfile']
else:
result = request.args.get['myfile']
return result
这将返回“错误请求浏览器(或代理)发送了该服务器无法理解的请求”。错误。我尝试了多种不同的方法来从文件中获取数据并简单地将其打印到屏幕上以启动,并且收到了一系列错误,包括“TypeError:‘FileStorage’对象不可调用”和“ImmutableMultiDict”对象不可调用”。任何有关如何正确完成此任务的指示都将受到赞赏。
尝试这个。过去几天我一直致力于保存和解压缩文件。如果您对此代码有任何疑问,请告诉我:)
我建议将文件保存在磁盘上,然后读取它。如果您不想这样做,则不需要。
from flask import Flask, render_template, request
from werkzeug import secure_filename
@app.route('/getfile', methods=['GET','POST'])
def getfile():
if request.method == 'POST':
# for secure filenames. Read the documentation.
file = request.files['myfile']
filename = secure_filename(file.filename)
# os.path.join is used so that paths work in every operating system
file.save(os.path.join("wherever","you","want",filename))
# You should use os.path.join here too.
with open("wherever/you/want/filename") as f:
file_content = f.read()
return file_content
else:
result = request.args.get['myfile']
return result
正如 zvone 在评论中建议的那样,我也建议不要使用 GET 上传文件。
上传文件
Effbot 的 os.path
Edit:-
您不想保存该文件。
上传的文件存储在内存中或文件系统上的临时位置。您可以通过查看请求对象上的文件属性来访问这些文件。每个上传的文件都存储在该字典中。它的行为就像一个标准的 Python 文件对象,但它还有一个 save() 方法,允许您将该文件存储在服务器的文件系统上。
我从 Flask 文档中得到了这个。由于它是一个Python文件,你可以直接使用file.read()
在它上面没有file.save()
.
另外,如果您需要保存一段时间然后稍后删除,您可以使用os.path.remove
保存后删除文件。在Python中删除文件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)