如何在Python Flask项目中接收前端上传的txt文件并读取内容
你现在的代码存在两个核心问题,对应修改方法如下:
1. 调整HTML表单配置
默认表单提交格式仅能传输普通文本字段,无法传递文件内容,需要给<form>标签添加enctype="multipart/form-data"属性,修改后代码如下:
<div class="file_input"> <form action="." method="POST" enctype="multipart/form-data"> <input type="file" name="txt_file"> <input type="submit" name="submit_form"> </form> </div>
2. 修改Flask端文件读取逻辑
Flask中上传的文件对象不会存放在request.form中,需要通过request.files读取,无需调用本地open方法,直接从上传的文件对象中读取内容即可,修改后代码如下:
@app.route('/') @app.route('/landing') def landing(): return render_template('index.html', PageTitle = "Landing page") @app.route('/', methods = ['POST']) def test(): # 获取上传的文件对象 txt_file = request.files.get('txt_file') # 基础校验:判断是否上传了有效文件 if not txt_file or txt_file.filename.strip() == '': return "未上传有效txt文件" # 读取文件内容并解码为字符串 book_str = txt_file.read().decode('utf-8') return book_str
原代码问题说明
你之前用request.form['txt_file']拿到的仅为表单传递的文件名字符串,调用open方法是尝试在服务器本地打开与上传文件同名的本地文件,自然无法读取用户上传的文件内容,只会返回文件名。
内容的提问来源于stack exchange,提问作者James Asher
相关产品推荐
相关产品推荐

