【发布时间】:2020-08-10 05:29:46
【问题描述】:
我很难理解如何将上传的文件名传递给烧瓶中的下一个 @app.route 以检索保存在服务器上的文件。
我已经能够像这样创建一个将文件上传到服务器的表单,并且能够将文件数据和文件名呈现到进程视图。
@app.route('/file_upload', methods=['GET', 'POST'])
def upload():
form = UploadForm()
if form.validate_on_submit():
f=form.file.data
filename = secure_filename(f.filename)
file_path = os.path.join(UPLOAD_FOLDER, filename)
f.save(file_path)
Input_data_dataframe = pd.read_excel(f)
return render_template('Set_parameters.html',filename=filename,tables=[Input_data_dataframe.to_html(classes=["table table-dark table-hover"], header="true", index=False,)])
return render_template('file_upload.html',form=form)
文件成功保存在所需的服务器目的地,文件名也在下一个视图中呈现,如下所示:
我现在希望从服务器位置检索此文件以进行进一步处理。我知道我可以使用 send_from_directory() 函数来检索文件,但是我不确定如何使用之前 @app.route('/file_upload') 中的正确文件名来实现它
@app.route('/Set_Parameters/', methods=['GET', 'POST'])
def processing(filename):
retrievedfile= send_from_directory(app.config['UPLOAD_FOLDER'],filename=filename, as_attachment=False)
Input_data_dataframe = pd.read_excel(retrievedfile) #converts uploaded file to a dataframe astype(int)
if request.method == 'POST':
Input_value1= request.form.get['Input_value1'] #get html form data value
Input_value= request.form.get['Input_value2'] #get html form data value
return render_template('Results.html',Input_value1=Input_value1, Input_value2=Input_value2, tables=[Input_data_dataframe.to_html(classes=["table table-dark table-hover"], header="true", index=False,)])
return render_template('Set_parameters.html')
目前,如果我按原样运行,我会收到此错误 TypeError: processing() missing 1 required positional argument: 'filename' 据我所知,我没有将文件名传递给函数。我只是不确定如何在不将文件名硬编码到代码,然后使用相同的文件进行进一步处理。
任何帮助将不胜感激。
【问题讨论】:
标签: python flask download upload