Python 当文件太大时,Flask重置连接,而不是返回413

Python 当文件太大时,Flask重置连接,而不是返回413,python,flask,Python,Flask,定义MAX\u CONTENT\u LENGTH时,Flask应返回413,但在我的情况下,它会使用此错误重置连接:error 101(net::ERR\u connection\u RESET):连接已重置。 我附加了一个基于Flask的文件上传模式的示例 我使用Chrome 15.0.874.5 import os from flask import Flask, request, redirect, url_for, send_from_directory from werkzeug im

定义
MAX\u CONTENT\u LENGTH
时,Flask应返回413,但在我的情况下,它会使用此错误重置连接:
error 101(net::ERR\u connection\u RESET):连接已重置。

我附加了一个基于Flask的文件上传模式的示例

我使用Chrome 15.0.874.5

import os
from flask import Flask, request, redirect, url_for, send_from_directory
from werkzeug import secure_filename

UPLOAD_FOLDER = 'uploads/'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif','bib','mp3'])

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

@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 redirect(url_for('uploaded_file',
                                    filename=filename))
    return '''
    <!doctype html>
    <title>Upload new File</title>
    <h1>Upload new File</h1>
    <form action="" method=post enctype=multipart/form-data>
      <p><input type=file name=file>
         <input type=submit value=Upload>
    </form>
    '''

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],
                               filename)

@app.errorhandler(413)
def file_to_big(e):
    return 'File to big'

if __name__ == '__main__':
    app.config['MAX_CONTENT_LENGTH'] = 1024 * 1024
    app.run(debug=True)                    
导入操作系统
从flask导入flask、请求、重定向、url\u for、从\u目录发送\u
从werkzeug导入安全文件名
上传文件夹='uploads/'
允许的扩展名=set(['txt'、'pdf'、'png'、'jpg'、'jpeg'、'gif'、'bib'、'mp3']))
app=烧瓶(名称)
app.config['UPLOAD\u FOLDER']=UPLOAD\u FOLDER
允许的def_文件(文件名):
在文件名和\
允许的扩展名中的filename.rsplit('.',1)[1]
@app.route('/',方法=['GET','POST'])
def upload_文件():
如果request.method==“POST”:
file=request.files['file']
如果文件和允许的文件(file.filename):
filename=secure\u文件名(file.filename)
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
返回重定向(url_用于('上载的_文件'),
文件名=文件名)
返回“”'
上载新文件
上载新文件

'''
@app.route(“/uploads/”)
def上传文件(文件名):
从_目录返回发送_(app.config['UPLOAD_FOLDER'],
文件名)
@app.errorhandler(413)
def文件大小(e):
返回“文件到大”
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.config['MAX\u CONTENT\u LENGTH']=1024*1024
app.run(debug=True)

使用Flask Dev服务器似乎只是个问题。当我在lighttp上上线时,重定向成功了。

我刚刚遇到了一个类似的问题,将一个文件上载到flask dev服务器时,我在chrome中使用了
net::ERR\u CONNECTION\u RESET

基本上,在服务器上的接收视图中,我检查用户的会话是否已过期,如果已过期,则返回重定向。由于某些原因,这会导致连接重置。我猜这是因为浏览器仍在尝试发送文件,但服务器不想要它(尽管我无法用证据备份)


我想我会把这个放在这里给任何像我一样登陆这里的人。

有没有关于gevent服务器的想法?没有,从来没有听说过gevent服务器。查看更多信息。我使用uwsgi和nginx作为代理,但仍然得到相同的错误我有完全相同的情况和问题,你找到了任何解决方案吗?找到了解决方法!在我的例子中,我想在上传文件之前检查用户是否有权上传文件到服务器,所以我在flash消息和重定向之前添加了
file=request.files.getlist('file')
,结果成功了!