Flask文件上传表单上的网站页面错误哪里是我的错误



祝你今天愉快!

我正在尝试使用网站页面上第二个表单中的文件上传表单。

我制定了一条处理文件的路线,但进一步(打印('pload complete 2'((,移动没有进行。进程在-print处停止('pload complete 2'(。

怎样才能使它发挥作用?

这是上传代码的Flask路线

@app.route('/upload2', methods=['POST'])
def upload2():  # put application's code here
if request.method=="POST":
print('upload complete 1')
upload_excel=request.files['upload_excel_2']
print('upload complete 2')
print(upload_excel.filename)
if upload_excel.filename != '':
print('upload complete 3')
filepath=os.path.join(app.config["UPLOAD_FOLDER"],upload_excel.filename)
upload_excel.save(filepath)
data=pd.read_excel(upload_excel)
data.to_sql('rashodi', con=db.engine, if_exists="append", index=False)
return print(data)
return print('upload complete')

这是html页面上传代码

<div class="row">
<div class="col-md-4">
<form class="form" method="POST" action="/upload2" enctype="multipart/form-data">
<label for="form_input" class="form_label">
<input type="file" id="form_input_2" class="form_input" name="upload_excel_2">
<span class="form_text">Change file</span>
</label>
<div class="form-group">
<button type="submit" name="upload_2" class="btn btn-secondary btn-sm">Upload File</button>
</div>
</form>
</div>

它是终端调试

[2022-04-11 22:36:12,738] ERROR in app: Exception on /upload2 [POST]
Traceback (most recent call last):
File "C:Appforyouinfovenvlibsite-packagesflaskapp.py", line 2073, in wsgi_app
response = self.full_dispatch_request()
File "C:Appforyouinfovenvlibsite-packagesflaskapp.py", line 1519, in full_dispatch_request
return self.finalize_request(rv)
File "C:Appforyouinfovenvlibsite-packagesflaskapp.py", line 1538, in finalize_request
response = self.make_response(rv)
File "C:Appforyouinfovenvlibsite-packagesflaskapp.py", line 1701, in make_response
raise TypeError(
TypeError: The view function for 'upload2' did not return a valid response. The function either returned None or ended without a return statement.
127.0.0.1 - - [11/Apr/2022 22:36:12] "POST /upload2 HTTP/1.1" 500 -
upload complete 1
upload complete 2
upload complete

print确实返回None,因此

return print('upload complete')

确实返回None,请只返回您想要的字符串,即

return 'upload complete'

其他return print使用data,因此不能保证是字符串,请相应地进行转换,以替换

return print(data)

使用

return str(data)
@app.route('/', methods=['GET','POST'])
@app.route('/index')
def home_page():  # put application's code here
if request.method=="POST":
if request.files['upload_excel'] != '':
upload_excel=request.files['upload_excel']
if upload_excel.filename != '':
filepath=os.path.join(app.config["UPLOAD_FOLDER"],upload_excel.filename)
upload_excel.save(filepath)
data=pd.read_excel(upload_excel)
data.to_sql('kotel', con=db.engine, if_exists="append", index=False)
return print(data)
elif request.files['upload_excel_2'] != '':
upload_excel=request.files['upload_excel_2']
if upload_excel.filename != '':
filepath=os.path.join(app.config["UPLOAD_FOLDER"],upload_excel.filename)
upload_excel.save(filepath)
data=pd.read_excel(upload_excel)
data.to_sql('rashodi', con=db.engine, if_exists="append", index=False)
return print(data)
return render_template('index new.html')

最新更新