【问题标题】:Does FastCGI or Apache2 limit upload sizes?FastCGI 或 Apache2 是否限制上传大小?
【发布时间】:2011-05-02 03:58:13
【问题描述】:

我在上传文件时遇到问题。我在 Apache2 (unix) 上使用 FastCGI 来运行符合 WSGI 的应用程序。以图像形式上传的文件开始保存在 MySQL 数据库中。但是,较大的图像被截断为 65535 字节。据我所知,不应该限制文件的大小,而且我不确定我的解决方案中的哪一个部分会导致问题。

是 FastCGI;它可以限制文件上传大小吗?

是 Python 吗? cgi.FieldStorage 对象为我提供了上传文件的文件句柄,然后我读取:file.read()。这会以任何方式限制文件大小吗?

是 MySQL 吗?保存图像数据的列类型为longblob。我认为这可以存储几 GB 的数据。所以几MB应该不是问题吧?

flups WSGIServer吗?我找不到有关此的任何信息。

我的文件系统绝对可以处理大文件,所以这不是问题。有什么想法吗?

UPDATE:

这是 MySQL。我让 python 输出上传的字节数,它大于 65535。所以我查看了 max_allowed_packetmysqld 并将其设置为 128M。矫枉过正,但暂时想确定一下。

我现在唯一的问题是让 python 的MySQLdb 允许传输超过 65535 个字节。有谁知道如何做到这一点?可能会作为一个单独的问题发布。

【问题讨论】:

    标签: python mysql file-upload apache2 fastcgi


    【解决方案1】:

    如果 Web 服务器/网关层正在截断传入的表单提交,我预计来自 FieldStorage 的错误,因为截断不仅会中断文件上传,还会中断整个 multipart/form-data 结构。即使cgi.py 容忍了这一点,也不太可能在刚刚正确的位置截断多部分以准确保留 2**16-1 字节的文件上传。

    所以我会怀疑 MySQL。 LONGBLOB 应该可以达到 2**32-1,但 65535 将是普通 BLOB 的最大长度。你确定这些类型是你认为的吗?请与SHOW CREATE TABLE x 联系。您使用哪个数据库层来获取数据?

    【讨论】:

    • +1。我相信它也是MySQL。如果不是数据库本身(错误的列类型),那么可能是驱动程序中的一些设置。
    • 我正在使用 python 的 MySQLdb 模块并通过它调用存储过程。列类型最初是BLOB,但在查找大小限制后,我将其升级为LONGBLOB
    • 正确,它是 MySQL。这实际上是对客户端和服务器的max_allowed_packet 的限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-26
    • 1970-01-01
    • 2011-01-29
    • 2017-03-09
    相关资源
    最近更新 更多