我的代码当前接收一个文件,并将其保存到预设目录,但是可以只使用该文件(读取文件)而不保存它吗?
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return "yatta"
else:
return "file not allowed"
return render_template("index.html")
Run Code Online (Sandbox Code Playgroud)
我试过了两个
file.read()和file.stream.read()但是返回值为空.我验证该文件是否存在于上载的目录中,并看到该文件不为空.
add*_*ted 10
我知道这已经过时但是为了让人们登陆这里进行类似的调查,这里是你想在病房之后保存并阅读你的文件.看起来像Werkzeug的FileStorage类(它是处理Flask中上传文件的类)指向每个操作(保存或读取)后的文件结尾.因此,在执行任何后续操作之前,我们必须将指针移动到文件的开头.我在下面的回答中使用python的pandas,因为我经常将csv读入数据帧.
import pandas as pd
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
## snippet to read code below
file.stream.seek(0) # seek to the beginning of file
myfile = file.file # will point to tempfile itself
dataframe = pd.read_csv(myfile)
## end snippet
return "yatta"
else:
return "file not allowed"
return render_template("index.html")
Run Code Online (Sandbox Code Playgroud)