gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:17:23 26 4
gpt4 key购买 nike

我正在开发一个 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。

http://www.imagechicken.com/viewpic.php?p=1255628359017775300&x=png

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

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

最佳答案

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

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

关于php - 大型 .PDF 文件未通过 PHP 作为中型 BLOB 上传到 MySQL 数据库,2MB 以下的文件工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1573581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com