大型 .PDF 文件无法通过 PHP 作为中型 BLOB 上传到 MySQL 数据库,2MB 以下的文件工作正常

2023-12-15

我正在开发一个 PHP 脚本,用于通过 PHP 将 .PDF 文档作为中等 BLOB 上传到 MySQL 数据库中。该脚本还允许用户搜索文件并打开/下载它们,但我认为该脚本的一部分与我的问题无关。该脚本适用于小于 2 MB 的文件,但一旦我尝试上传大于 2 MB 的文件,我的内容(中 BLOB)列中就不会出现任何内容,并且 mime 类型没有值。我已经尝试将 MySQL 服务器的 max_packet_size 从默认值 1 MB 增加到 4 MB。我认为我还将 php.ini 更新为正确的值。我将 upload_max_size 设置为 4MB,post_max_size 设置为 4 MB,memory_limit 设置为 16 MB。不过,我还没有真正尝试过 max_input_time,因为它默认为 60 秒,考虑到该脚本用于 Intranet 上的内部应用程序,这似乎已经足够了。

我还尝试使用 errorInfo() 和 errorCode() 捕获脚本中 PDO 对象的错误,并且两者都通过 0(无错误)。

这是我的脚本的上传部分:

if ($key == 'upload')
{
    set_time_limit(0);
    $_SESSION['upload'] = $value;

    if ($_FILES['userfile']['name'])
    {
        $fileName = $_FILES['userfile']['name'];
        $tmpName  = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];
        $docType = $_POST['docType'];
        $netKey = $_POST['netKey'];
        $fp       = fopen($tmpName, 'r');
        $content  = fread($fp, filesize($tmpName));
        $content  = addslashes($content);
        fclose($fp);

        $_SESSION['filetype'] = $fileType;

        if(!get_magic_quotes_gpc())
        {
            $fileName = addslashes($fileName);
        }
        $sqlCheck = "SELECT id, name, documentType, networkKey FROM upload WHERE active='1'";
        foreach ($dbh->query($sqlCheck) as $row)
        {
            if (($row['name'] == $fileName) && ($row[networkKey] == $netKey) && ($row['documentType'] == $docType)) 
            {
                $_SESSION['updateRow'] = $row['id'];
            }

        }

        if ($_SESSION['updateRow'])
            {
                $deactivateDuplicate = "UPDATE upload SET active = 0, modifiedBy = '".strtoupper($_SERVER['REMOTE_USER'])."', modifiedDate = Now() WHERE id = '".$_SESSION['updateRow']."' AND active ='1'";
                $dbh->query($deactivateDuplicate);
                $_SESSION['sql'] = "SELECT id, name, documentType, type, size, networkKey, modifiedBy, modifiedDate, active FROM upload WHERE active = '1'";
                $_SESSION['uploadSearch'] = 1;
                $_SESSION['updateRow'] = 0;
            }
            $values = "'".$fileName."','".$docType."','".$fileType."','".$content."','".$fileSize."','".$netKey."','".strtoupper($_SERVER['REMOTE_USER'])."', Now(), 1";
            $sqlUpload = "INSERT INTO upload (name, documentType, type, content, size, networkKey, modifiedBy, modifiedDate, active) VALUES (".$values.")";
            $dbh->query($sqlUpload);

            $_SESSION['sql'] = "SELECT id, name, documentType, type, size, networkKey, modifiedBy, modifiedDate, active FROM upload WHERE active = '1'";
            $_SESSION['uploadSearch'] = 1;


    }
}

这是应用程序的前端,显示较小的文件可以工作,而较大的文件则不能。文件sample.pdf 小于1 MB,文件test.pdf 为2.5 MB。

我本来会使用 img 标签,但可惜我是新用户,不允许。

接下来我要寻找的是 Apache 中限制文件大小的设置。我是 LAMP 新手,所以任何建议都会很棒。 谢谢


您可能会遇到 HTTP 请求的限制(我认为是 4MB),或者您的 HTTP 请求可能会超时。我以前遇到过这个问题。您可能需要查看您的 php.ini 文件以了解最大上传大小。

免责声明:我不是 PHP 开发人员 :D

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大型 .PDF 文件无法通过 PHP 作为中型 BLOB 上传到 MySQL 数据库,2MB 以下的文件工作正常 的相关文章

  • 如何通过 API 平台使用“paramconverter”?

    如何通过 Symfony API 平台实现或使用 paramconverter 我想在路线上使用实体 ID 并立即生成一个对象 准备在控制器中使用 我没有在这个项目上使用注释 路由配置位于 YAML 文件中 resources App Me
  • 使用 PHP 代码和 HTML 表单将 Excel (.csv) 导入 MySQL

    我知道还有其他类似的帖子 但每个人都建议直接在 PHPMyAdmin 中将其导入 MySQL 这工作完美 但我需要通过 HTML 表单导入 PHP 到 MySQL 我想要一个收集文件的 HTML 表单 然后将该文件传递给 PHP 脚本 我想
  • 如何在 WP_Query 中按日期排序?

    我已经尝试过这种方式但是orderby and order不适用于 WP Query 类 posts new WP Query array post type gt block code orderby gt post date order
  • 验证数据库匹配中的 $_GET id 是否足够安全?

    我的网站上有 2 个页面 一个是 index php 索引页面列出了数据库中存在的所有帖子 另一个页面是 post php 当单击索引页面上的特定帖子时 帖子页面显示单个帖子 现在我用来列出 index php 上所有帖子的代码是 post
  • Blueimp jQuery 文件上传,传递额外的表单数据

    我可以使用一些帮助 我已经设法使 blueimp jQuery 文件上传为我工作 但我仍然绝对是一个新手 我对 jQuery 等知之甚少 所以请尝试将其清晰明了地提供给我尽可能简单 我会尝试具体一点 好的 我想实现的是人们可以上传照片 并为
  • 代码点火器 JSON

    你好 我使用 codeigniter 然后我从控制器中的数据库中回显输出 然后在我的视图文件中执行以下操作 但它没有显示任何内容 S 我的模型文件 function forumList this gt db gt select oversk
  • 在 PHP 中使用 file_get_contents 进行 PUT 请求的错误请求

    这个 api 调用使用 Postman REST 客户端 可以正常工作 但是当我的 GAE 应用程序中的服务器上发出请求时 我当前收到以下错误 HTTP 请求失败 在 C Projects app file php 第 26 行 打开流失败
  • 自动将所有mysql表转储到单独的文件中?

    我想将每个 mysql 表转储到单独的文件中 手册指出其语法是 mysqldump options db name tbl name 这表明您事先知道表名称 我现在可以设置知道每个表名称的脚本 但是假设我在路上添加了一个新表并且忘记更新转储
  • 从 php 对 Active Directory/ISA 进行身份验证 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个复杂的问题 而且由于我真的不知道从哪里开始而加剧 在过去的几年里 我开发了许多基于 php Web 的系统 当我构建它们时 我
  • 如何使用 PHP 从 MySQL 查询中按升序对值进行排序?

    我使用以下 PHP 脚本从 MySQL 表中获取和更改数据 并将结果打印在 HTML 表中 我希望按升序对数据进行排序 utilization percentage变量 它是由创建的 total client time total avai
  • MySQL 中的断言

    我有一个针对大型数据库运行的 SQL 脚本 我想在开始时提出几个简单的查询 作为健全性检查 有没有办法在MySQL中写断言 或者任何类型的 选择 如果它与该值不匹配 则中止整个脚本 一些疯狂的代码 要点是 SET可能会引发 mysql 变量
  • PHP 5 的 SQLite 编译设置是什么?

    SQLite 3 7 附带了新的预写日志记录 WAL http www sqlite org wal html并且有很多设置可以被配置 http www sqlite org compile html 但是 似乎没有任何方法可以改变任何事情
  • PDO fetch() 失败时会抛出异常吗?

    有没有方法PDO语句 fetch http php net manual en pdostatement fetch php如果 PDO 错误报告系统设置为抛出异常 则在失败时抛出异常 例如 如果我设置 PDO ATTR ERRMODE g
  • 使用 PHP 5.3 ?: 运算符

    有了这个测试页 page int GET page 1 echo page 我不明白页面未定义时得到的输出 Request Result page 2 2 page 3 3 page 1 error Undefined index page
  • 为 SimpleXMLElements 数组编写 foreach 循环

    我正在使用 PHP 5 中的 XPath 来解析 XML 文档 我遇到的问题是写一个foreach正确显示以下数组 XML 文档示例 值1 值2 xmlfile link to file xml xmlRaw file get conten
  • 从数据库生成 XML 时出现 PHP 编码错误 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试获取一个简单的 PHP 服
  • 学说“没有命名的协会”

    将我添加到无法找出其学说映射出了什么问题的人列表中 我正在模拟国际象棋Game与一对多Halfmoves 有任何想法吗 DDL create table game game id int primary key create table h
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc
  • 物理写入文件已满 - mysql 错误

    我正在使用xampp 每次启动mysql时 我都会在xampp中收到以下错误 Error MySQL shutdown unexpectedly 13 16 14 mysql This may be due to a blocked por
  • 如何在 Laravel 中创建一条包罗万象的路线

    我需要一个 Laravelroutes php将捕获所有流量到特定的条目example com premium section网站 以便我可以提示人们在访问优质内容之前成为会员 您还可以通过在参数上使用正则表达式来捕获 全部 Route g

随机推荐