PHP和MySql中的上传大小问题

2024-02-09

我正在通过 PHP 将文件上传到 MySql DB。 我能够上传最大 1MB 的文件(通过反复试验发现)。 大小超过 1 MB 的文件不会上传。 PHP中mysql_error()函数打印的MySql错误为: MySQL服务器消失了

有人可以帮我解决这个问题吗? MySql 服务器仅在请求 > 1MB 时启动并运行,并给出此错误。

问候, 玛雅克。

附: 我正在使用表单上传文件。<FORM METHOD="post" ACTION="fileUpload.php" ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="300000000"> <INPUT TYPE="hidden" NAME="action" VALUE="upload"> Description: <TEXTAREA NAME="txtDescription" ROWS="1" COLS="80"></TEXTAREA> <INPUT TYPE="file" NAME="binFile" ID="binFile"> <INPUT TYPE="submit" NAME="Upload" VALUE="Upload"> </FORM>


你的sql查询可能超出了最大允许数据包 http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet大小,在这种情况下服务器将断开连接。
您可能感兴趣mysqli_stmt::send_long_data http://php.net/mysqli-stmt.send-long-data它允许您以块的形式发送超过 max_allowed_pa​​cket 的参数。

更新:“我该如何更改它?使用 mysqli 是唯一的选择吗?”
据我所知,该值不能在每个会话的基础上更改,即,如果您无法更改服务器配置(my.cnf 或启动参数),则该值将是只读的。编辑:正如评论所建议的,如果您有的话,您可以在启动后更改 mysql 服务器的全局值适当的权限 http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html#priv_super。 PDO/PDO_MYSQL(从 phpversion 5.3.0 开始)似乎不支持 send_long_data,但我也不确定。这样就离开了mysqli http://php.net/mysqli作为唯一的选择。我最近注意到韦兹·弗隆 https://stackoverflow.com/users/149111/wez-furlong加入了堆栈溢出。由于他是 PDO 实现的作者之一,他可能知道(尽管他没有编写 pdo_mysql 模块)。

(完全未经测试且丑陋)示例

// $mysqli = new mysqli(....
$fp = fopen($_FILES['binFile']['tmp_name'], 'rb') or die('!fopen');

//$result = $mysqli->query('SELECT @@max_allowed_packet') or die($mysqli->error);
//$chunkSize = $result->fetch_all();
//$chunkSize = $maxsize[0][0];
$chunkSize = 262144; // 256k chunks

$stmt = $mysqli->prepare('INSERT INTO foo (desc, bindata) VALUES (?,?)') or die($mysqli->error);
// silently truncate the description to 8k
$desc = 8192 < strlen($_POST['txtDescription']) ? $_POST['txtDescription'] : substr($_POST['txtDescription'], 0, 8192);
$stmt->bind_param('sb', $desc, null);

while(!feof($fp)) {
  $chunk = fread($fp, $chunkSize);
  $stmt->send_long_data(1, $chunk) or die('!send_long_data.'.$stmt->error);
}
$result = $stmt->execute();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP和MySql中的上传大小问题 的相关文章

  • Cron 作业的远程地址问题

    我需要获取访问者的IP 但是当cron运行时 它发现REMOTE ADDR是一个未定义的索引 事实上 当文件与 cron 一起运行时 没有远程地址 我该如何避免这个问题 PHP 有没有办法说 如果 REMOTE ADDR 存在则考虑它 如果
  • 无法从 Web 主机本身以外的任何地方连接到任何 Web 主机的 MySQL 数据库

    我有 2 个不同的虚拟主机 pagodabox 000webhost 都是免费的 并且我已经设置了localhost与MySQL 我已经在他们三个上安装了 wordpress 它们在自己的域中工作得很好 即 什么时候localhostwor
  • 通过 PEAR 安装 PHPUnit

    我安装时遇到问题PHPUnit 3 4 6 via 梨1 9 0 当我发现频道后pear phpunit de并尝试使用以下命令之一 pear 安装 phpunit PHPUnit pear 安装 alldeps phpunit PHPUn
  • 统计数据库中的注册用户数

    我想反映在我的网站上注册的人数 只有我拥有的代码不起作用 它让我知道它不可能 转换为字符串 另外 当我将其设置为在 HTML 中调用的函数时 我收到 connection 未定义的错误 require once connect php sq
  • Laravel 5.7:维护模式的自定义刀片模板,但不是 503.blade.php

    每次php artisan down开启后 Laravel 显示 503 页面 好的 我可以通过创建名为的新文件来自定义它503 blade php inside resources views errors 关键是 我在任何时候都不认为维
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • 如何在 MySQL 中启用严格 sql_mode?

    我怎样才能启用严格sql mode在 MySQL 中 我想从 SQL 中获取数据并在中处理相同的数据strict mode 我现在的sql mode is mysql gt SELECT sql mode sql mode NO ENGIN
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • Monolog:通过邮件发送错误日志会导致每个发送的错误都会收到一封额外的邮件

    对于通过邮件发送的每个错误日志 我们都会收到另一封额外的电子邮件 其中包含 2 行 smtp 调试日志消息 新创建的 symfony 演示 symfony new demo 配置独白以通过邮件发送错误消息 如docs https symfo
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • 即使在双引号内或使用 PHP_EOL,PHP echo 也不打印换行符

    这是一张照片剪辑 我认为它很清楚 这真让我抓狂 我似乎无法让 php 在我的本地主机 使用 xampp 或在线 PHP 解释器上打印换行符 如果你想在 php 中使用 HTML 标签 试试这个 echo dkljaks aalksja kl
  • ElasticSearch 和 PHP 中的多个字段搜索

    我正在使用最新版本弹性搜索 PHP https github com elasticsearch elasticsearch php以及最新版本的 MongoDB 和 ElasticSearch 我需要对可以包含一个或多个值的多个字段进行搜
  • 多维数组 PHP 内爆 [重复]

    这个问题在这里已经有答案了 就我的数据结构而言 我有一个 communications 数组 每个 communications id 本身包含三部分信息 id score 和 content 我想内爆这个数组以获得逗号分隔的 id 列表
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • Laravel 4.2 Composer 安装错误:“无法扫描类”

    我想通过 Composer 在新的 Laravel 4 2 安装上安装一些软件包 但是 我遇到了例外 这是我的作曲家文件 name laravel laravel description The Laravel Framework keyw
  • WordPress 子主题包括包含文件

    我在一家WordPress使用 AMPPS 作为本地主机在我的本地计算机上进行设置 使用 Delta 主题 我创建了一个子主题 delta2 child 初始设置效果很好 但是 我需要更改包含文件夹中名为 home slider php 的
  • 如何更新 MySQL 数据库中的两列?

    这不起作用 UPDATE customers SET firstname John AND lastname Smith WHERE id 1 用逗号分隔值 AND是一个逻辑运算符 它的位置是WHERE and ON条款 UPDATE cu
  • 无法访问 WordPress 中声明的全局变量

    我有以下代码 g value something print g value function get value global g value print g value print get value 当我在独立的 PHP 脚本中运行它
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii

随机推荐

  • Android 设置视图位置 - setY 与 setTop

    我打算以编程方式移动按钮的位置 按钮处于相对布局 我研究发现我们可以使用 setY or setTop 看起来它们的工作原理应该是一样的 但就我而言 setTop 根本不改变位置并且 setY 仅有效 我不确定我误解了什么 但这对我来说很奇
  • 如何摆脱 VS Code 中的“同步更改 1 ↑”按钮?

    最近 由于某种原因 每次我想要将更改推送到 GitHub 存储库时 我都必须按此按钮 我不记得是否有一个设置是我不小心切换的 我也从未在 VS Code 环境之外更改我的存储库 我正在使用 Gatsby GitHub Netlify 设置
  • 软键盘覆盖 PopupWindow 中的 EditText

    我整理了一个简单的测试项目 它显示一个包含 EditText 的 PopupWindow 在 Android 2 2 上 当我点击 EditText 时 会显示软键盘 正如我所期望的那样 但是 软键盘覆盖了 EditText 并且我无法平移
  • APC缓存碎片问题

    我在 CentOS 服务器 5 上运行 APC php 缓存 每天 13 000 次访问 运行 php 5 3 3 APC 3 1 4 和 4Gb RAM 在过去的几周里 我经历了很多 unable to allocate memory f
  • 响应图表不受控制地增长

    我有一个 vue 组件 它实现了 vue chartjs 的 Horizo ntalBar 组件 我将其渲染为 bootstrap vue 表中的单元格 我的愿望是让图表保持固定的高度 但随着窗口的增大 缩小而水平缩放 当页面首次加载时 图
  • 使用堆栈反转数组

    我正在尝试使用堆栈反转数组 但是 我收到错误arr i stack top 在 Eclipse 中解决它的建议是将其更改为arr i stack pop 或添加演员阵容 还有其他方法吗 或者我犯了一个错误 我看到教程和问题询问如何使用堆栈反
  • 如何在 R 中使用 H2o 从 SQL Server 加载表?

    我尝试使用 h2o 将表加载到 R 中 但出现以下错误 my data lt h2o import sql table my sql conn table username password 错误 意外的 HTTP 状态代码 500 服务器
  • Javascript - innerHTML 不适用于 HTML 选择菜单

    在我的 HTML 页面中 我有 2 个选择菜单 其 ID 为 月 和 日 页面加载时 日 为空 月 有 12 个选项 其值 1 12 对应于一月至十二月 month 有一个 onchange 事件调用此函数 function showOut
  • 属性 KeyValuePair.Value 没有 setter

    我正在使用一个Dictionary
  • Java 中的时区

    我允许我的网络应用程序上的用户根据他们选择的时区安排活动 我想向最终用户提供一份良好的时区列表 然后将其轻松转换为java util TimeZone服务器端的对象 String TimeZone getAvailableIds 是我可以使
  • 从 vs 2017 以编程方式连接到 TFS

    我在用TFS 15 x package Error Microsoft TeamFoundation TeamFoundationServerUnauthorizedException TF30063 您无权访问 https myproje
  • 使用钩子时,React 批量状态更新功能是否有效?

    对于类组件 this setState如果在事件处理程序内部 则调用批处理 但是如果状态在事件处理程序之外更新并使用 会发生什么useState hook function Component const a setA useState a
  • StandardScaler -ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值

    我有以下代码 X df X as matrix header 1 col num scaler preprocessing StandardScaler fit X X nor scaler transform X 并得到以下错误 File
  • 如何使用 Objective-C 判断 iPhone 是否连接到 wifi 网络?

    在 Objective C iPhone 应用程序的上下文中 我需要能够判断 iPhone 是否已连接到 wifi 网络 并在可能的情况下侦听此状态的变化 有谁知道如何做到这一点 谢谢 加布伊 正如其他人提到的 可达性样本 https de
  • 在 Reactjs 中的 EsLint“react / jsx-props-no-spreading”错误中禁用

    安装 EsLint 后 我 出现的错误之一如下 禁止传播 propeslint react jsx props no spreading 我想在 EsLint 配置中创建一条规则来忽略此错误 但我发现的示例不起作用 这是创建全局异常的格式
  • 正则表达式 Windows 路径验证器

    我试图找到一个针对 Javascript 的 Windows 文件路径验证 但似乎没有一个能够满足我想要的要求 所以我决定自己构建它 要求如下 路径不能为空 可能以 x x 开头 后跟文件名 无文件 需要延期 文件名不能包含以下特殊字符 文
  • PHP:可以包含 file_exists() 说不存在的文件

    在我的脚本中 我设置了包含路径 以便应用程序的另一部分也可以包含文件 检查文件是否存在 然后包含它 但是 在我设置包含路径后 file exists 报告该文件不存在 但我仍然可以包含相同的文件
  • PHP 中静态属性的神奇 __get getter

    public static function get value 不起作用 即使它起作用 碰巧我已经需要神奇的 get getter 作为同一个类中的实例属性 这可能是一个是或否的问题 那么 有可能吗 不 这是不可能的 引用 get 的手册
  • 使用 DataContractJsonSerializer 生成轻量级 JSON

    我正在尝试使用 Net 3 5 中的 C 和 DataContractJsonSerializer 生成 JSON 问题是我不知道如何构建适合我需要的结果的结构 我尝试使用哈希表 列表对象和数组列表来重现 PHP 的关联数组 但无法弄清楚如
  • PHP和MySql中的上传大小问题

    我正在通过 PHP 将文件上传到 MySql DB 我能够上传最大 1MB 的文件 通过反复试验发现 大小超过 1 MB 的文件不会上传 PHP中mysql error 函数打印的MySql错误为 MySQL服务器消失了 有人可以帮我解决这